【发布时间】:2014-08-06 09:19:34
【问题描述】:
我正在尝试下面的程序
#include <iostream>
using namespace std;
#define MKSTR(x) #x
#define CONCATE( x , y ) (x)##(y)
int main()
{
int xy = 100;
cout << MKSTR(HELLO C++) << endl;
cout << CONCATE(HELLO,C++) << endl;
cout << CONCATE(x,y) << endl;
return 0;
}
并得到错误
错误 C2065:“HELLO”:未声明的标识符
。我不明白为什么 VS 2012 编译器需要宏参数或将它们视为标识符。 MKSTR 宏也运行良好,但 CONCATE 宏给我带来了麻烦。无法理解为什么编译器会这样做。
【问题讨论】: