【发布时间】:2015-04-17 17:27:34
【问题描述】:
有没有办法使用 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 的行为是一样的...
【问题讨论】:
-
这很好笑,你为什么不看原始源代码?
-
您可以让编译器在将源代码应用于预处理器并剥离 cmets 后输出源代码。请注意,#includes 使它成为一个可以使用的工具。
-
@PranitKothari:这一切都很好,但复杂的嵌套预处理器条件对你没有多大好处。
标签: c++ gcc visual-c++ c-preprocessor