【发布时间】:2015-09-02 16:05:48
【问题描述】:
当#define 存在时,我有一个包含main() 函数的.hpp 文件。如果您必须知道,这是为了测试。因此,当我在启用此测试的情况下进行编译时,我需要生成一个可执行文件,但 g++ 似乎拒绝并且只会生成一个“gch”预编译头文件。检查此文件的二进制内容后,它的格式为前四个字节“gpch”,然后是版本号,绝对不能在任何平台上执行。
我两次尝试获取可执行文件如下:
g++ -DENABLE_TESTING -std=c++11 myheaderfile.hpp
g++ -DENABLE_TESTING -std=c++11 -o a.out myheaderfile.hpp
第一个生成 myheaderfile.hpp.gch,第二个生成完全相同的输出到 a.out。如上所述,这些文件不可执行。
所以我现在使用的解决方法是包含来自特殊用途和特别命名的 .cpp 文件的头文件,然后编译该文件而不是头文件,这样就可以了。我在 Makefile 中使用此解决方法,因此它相当轻松,因此我对进一步的解决方法不感兴趣,而是对我的实际问题的答案或者可能是解决方法不可避免的权威声明。
【问题讨论】:
-
为什么你的标题中有
main函数? -
我不是权威,但您的“解决方法”似乎是编译程序的正常过程。
-
将
main放入常规的.cpp其中#includes 标题(这将是正确和理智的方式)不起作用 - 为什么?
标签: c++ gcc g++ precompiled-headers