c预编译 #define相关

xiaoxiao2026-08-06  2

#是生成字符串: #define a(x) #x a(bc) => "bc" ##是连接: #define a(x) abc##x a(123) => abc123 #error是生成编译错误消息: #ifdef abc #error something wrong... #endif //如果abc是已经定义的宏,那么编译的时候就会显示错误消息something wrong... // “标准”宏定义一个MIN 输入两参数输出其中最小的 #define MIN(A,B) ((A)<= (B) ? (A) : (B) ) 这种定义会带来一些副作用,看下面的例子: int x = 1, y = 2; int main() { printf("min=%d\n", min(x++, y++)); printf("x = %d, y = %d\n", x, y); } 执行完min(x++、y++),我们期望x的值为2,y的值为3。 但是,实际的结果是,执行完mini(x++、y++)后,x的值为3,y的值为3,原因在于宏展开后x++被执行了两次。但暂时没找到其它更好的办法。 相关资源:C#编程基础运算符和特殊符号的使用
转载请注明原文地址: https://www.6miu.com/read-5050779.html

最新回复(0)