Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试在 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它本身不需要分号来终止定义,因此如果您使用分号,它将成为文本的一部分,将插入到使用宏的任何位置。
#define
预处理后,第一个示例将把该using行变成:
using
using namespace; std;
这显然有句法问题。
解决方法是删除#define行中的尾随分号,如下所示:
#define def namespace
您应该弄清楚如何使用编译器读取预处理代码,这在理顺宏引起的混乱时总是很有指导意义的。