考虑以下情形:
#define func(type, x, y)
int a = 1;
int b = 2
if (a > b)
func(int, a, b);
else{type tmp = x; x = y; y = tmp;}
std::cout<<"Hello, World!"<<std::endl;
这种情况下, func 被调用的时候,语句的末尾有个分号。编译预处理以后会变成如下情况:
int a = 1;
int b = 2
if (a > b)
{type tmp = x; x = y; y = tmp;};
else
std::cout<<"Hello, World!"<<std::endl;
编译时会报错
参考链接:http://www.cnblogs.com/bastard/archive/2011/11/24/2262195.html
时间: 2024-08-07 17:01:39