#include <stdio.h>
#define min(a,b) ((a)<=(b)?(a):(b))int main (int argc, char **argv)
{
char *p = "abcdefgh";
printf("%c\n",min(*p++,‘c‘)); //宏被扩展为 ( *p++ <= c ? *p++:c )
return 0;
}输出
b
我们可以看到,宏只是简单的替换,这个例子如何避免副作用呢?可以使用if-else 语句改写。
时间: 2024-10-15 00:54:33