typeof可以获取数据的类型,在内核中用的很多 #define min(X, Y) \ (__extension__ ({typeof (X) __x = (X), __y = (Y); \ (__x < __y) ? __x : __y; })) #define max(X, Y) \ (__extension__ ({typeof (X) __x = (X), __y = (Y); \ (__x > __y) ? __x : __y; })) 这样做的目的是消除宏对X,Y的改变的影响,例如:result = min(x++, --y); printf(x, y); 补充:圆括号定义的符合语句可以生成返回值,例: result = ({ int a = 5; int b; b = a + 3; }); 将返回8