#include <iostream>
#define add(a, b) ((a) + (b))
using namespace std;
int add(int a, int b)
{
return a + b;
}
int main(int argc, char* argv[])
{
cout << add(7, 8) << endl;
}
定义了一个add宏和一个add函数,编译时会得到以下错误:
Macro.cc:4:5: error: expected unqualified-id before ‘int’
Macro.cc:4:5: error: expected ‘)’ before ‘int’
说明在预处理时add函数名被宏定义替换成((a) + (b)),add函数的定义变成
int ((a) + (b))(int a, int b)
编译出错。