文章目录 宏 预处理不做计算 宏参数字符串化(#) 把两个记号组成一个记号: (##) 变参宏:...和__VA_ARGS__ 宏 预处理不做计算 #define SQUA(x) x*x SQUA(5 + 2)将变成:5 + 2 * 5 + 2. 所以需要改为 #define SQUA(x) (x)*(x) 但是仍有一个问题:100 / SQUA(5)将变为:100 / 5 * 5 所以需要改为 #define SQUA(x) ((x)*(x)) 必须使用括号限定宏里面的运算优先级 需要注意,不能将++x带入宏,因为这会让x递增两次 宏参数字符串化(#) #define PSQ(x) printf("The square of x is %d\n", ((x)*