为什么编译和链接的可执行文件包含源代码中包含的头文件路径?我正在使用wxWidgets库并使用Visual Studio 2013和gcc进行编译。这些头文件用于什么?如果它是编译器选项,我该如何禁用它以避免这种情况?
构建配置:发布,静态链接。
答案 0 :(得分:14)
可执行文件中可能会出现多种解释:
strip
删除它,或者不使用-g
编译选项。您还应该使用NDEBUG
进行编译,以禁用调试代码和断言。 Release 模式通常就是这种情况,但您可能需要仔细检查。__FILE__
进行跟踪或记录。 __FILE__
在宏扩展时扩展为源文件名,可以是源文件或头文件。其中一个函数是assert()
:它实际上是一个扩展为测试的宏,以及一些包含当前文件名的错误报告代码。static char
数组形式的静态源ID,以跟踪源代码版本。这种方法已经相当陈旧,但许多旧资源仍然存在。在源文件或头文件中查找其名称出现在可执行文件中并修复问题的内容。
答案 1 :(得分:6)
wxwidgets在其头文件中有许多断言(例如,如您所注意到的wxASSERT
中),都使用wx/debug.h
中定义的public boolean checkAllMatchesFound()
{
for (int i=0; i<MatchingGame.NUMBER_OF_CARDS; i++){
if (cards[i].isFacingUp())
return true;
}
return false;
}
宏
要禁用这些功能,您可以在包含任何 wxwidget标头之前#define wxDEBUG_LEVEL 0
。