我有一个基于 Visual Studio C++ 的程序,它使用预编译的头文件 ( stdafx.h
)。现在我们正在使用 gcc 4.x 将应用程序移植到 Linux。
问题是如何在两种环境中处理预编译的头文件。我用谷歌搜索但无法得出结论。
显然我想离开stdafx.h
Visual Studio,因为代码库非常大,而且预编译的头文件会增加编译时间。
但问题是在 Linux 中要做什么。这是我发现的:
- 保持
stdafx.h
原样。gcc 编译代码的速度比 VC++ 快得多(或者它只是我的 Linux 机器更强大...... :)),所以我可能对这个选项感到满意。 使用此处的方法-
stdafx.h
看起来像(USE_PRECOMPILED_HEADER
仅针对 VS 设置):#ifdef USE_PRECOMPILED_HEADER ... my stuff #endif
使用此处的方法- 编译 VC++
/FI
以隐式包含stdafx.h
在每个 cpp 文件中。因此,在 VS 中,您的代码可以轻松切换以在没有预编译头文件的情况下进行编译,并且无需更改任何代码。
我个人不喜欢依赖,而且混乱stdafx.h
正在推动一个大的代码库。因此,这个选项对我很有吸引力——在 Linux 上你没有stdafx.h
,同时仍然能够在 VS 上打开预编译的头文件/FI
。- 在 Linux 上
stdafx.h
仅编译为预编译头文件(模仿 Visual Studio)
你的意见?有没有其他方法来处理这个问题?