In the linux world, you may have seen many unknown structures and statements. You may not know their purposes. For example, the composite expressions in parentheses are as follows: [cpp] # include <stdio. h> # define max (x, y) \ <SPAN style = "COLOR: # ff0000"> ({int z; \ if (x> y) z = x; \ else z = y; \ z ;\}) </SPAN> int main (int argc, char ** argv) {max (); return 0 ;} # include <stdio. h ># define max (x, y) \ ({int z; \ if (x> y) z = x; \ else z = y; \ z ;\}) int main (int argc, char ** argv) {max (3, 5); return 0;} Of course, this can be programmed in gun c, Because it is an extension of gun c, the format is ({content}), which is common in macro definition. The entire content uses the last sentence as the return value, that is, the max macro returns an int value, this value is the value of z. If you do not know the types of x and y in advance, you can rest assured that typeof can help you solve this problem. There are a lot of such structures in linux code. Don't know what's going on!