有没有办法使用 msvc 或 gcc 在预处理器文件中查看我的#defines?
这里有一些代码:
#include <iostream>
#define asdasdadda asdsad
int main()
{
#ifdef asdasdadda
std::cout << "yes\n";
#else
std::cout << "no\n";
#endif
return 0;
}
我是这样用cl编译的:
$ cl main.cpp /C /P
这是预处理后的 main.i 的尾部:
#line 2 "main.cpp"
int main()
{
std::cout << "yes\n";
#line 13 "main.cpp"
return 0;
}
这是我期望的:
#line 2 "main.cpp"
#define asdasdadda asdsad
int main()
{
std::cout << "yes\n";
#line 13 "main.cpp"
return 0;
}
gcc 的行为是一样的...
最佳答案
有一个未记录的编译器开关,/d1PP
,它将在预处理器输出中保留宏定义。如果您使用 /P/d1PP
编译 Rado 的示例,您将获得以下输出文件:
#line 1 "q.cpp"
#define BLAH 1
int main()
{
cout << "BLAH defined" << endl;
#line 10 "q.cpp"
}
请注意,此开关未记录在案。因此,它不受官方支持。它可能随时被删除,或者它的行为可能随时被改变。它可能有错误。使用风险自负等等。
关于c++ - 如何在 msvc 预处理器中打印宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554362/