宏定义是C语言预处理指令的一种,用于在编译之前对代码中的文本进行替换。宏定义的基本语法如下: c #define 宏名 替换文本 其中,宏名是一个标识符,替换文本是在预处理阶段将被替换的文本。 2. 宏定义的常见“坑” 2.1 运算符优先级问题 由于宏定义只是简单的文本替换,而不进行语法检查或运算,因此可能会因为运...
4. 宏参数重复调用 有如下宏定义: #define min(X, Y) ((X) < (Y) ? (X) : (Y)) 当有如下调用时next = min (x + y, foo (z));,宏体被展开成next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));,可以看到,foo(z)被重复调用了两次,做了重复计算。更严重的是,如果foo...