我正试图在C++中使用以下代码。有人能告诉我为什么它显示错误吗?
#define def namespace;
using def std;
int main(){
return 0;
}
而下面的代码运行良好
#define def namespace std;
using def;
int main(){
return 0;
}
这是因为嵌入了分号:
#define def namespace;
^
|
WHOA!
请注意,#define
本身不需要分号来终止定义,因此如果使用分号,它将成为文本的一部分,将插入到使用宏的任何位置。
预处理后,第一个示例将using
行转换为:
using namespace; std;
这显然存在句法问题。
修复方法是删除#define
行中的尾随分号,如下所示:
#define def namespace
你应该弄清楚如何用编译器读取预处理的代码,这在纠正宏引起的混乱时总是很有指导意义的。