我有一些代码需要特定的 gcc 编译器选项(否则无法编译)。当然,我可以确保在 makefile 中为这个特定的源文件设置了所需的选项。但是,如果可以从 source_file.cpp
中为相应的编译单元(或其中的一部分)设置此选项,将会更有帮助。
我知道可以使用 #pragma GCC diagnostic
打开或关闭警告消息,但是 -fsomething
类型的选项呢?我取自 this question这是不可能的。
但也许至少有一种方法可以从代码中检查某个 -f
选项是否打开?
注意 我对从二进制 as was asked previously 中查找编译器标志不感兴趣,也不是来自命令行。
最佳答案
根据我的经验,不会。这不是你处理这件事的方式。相反,您将特定于编译器/平台/操作系统的代码放入源代码中,并使用适当的 ifdef
语句将其包装起来。这些包括:
#ifdef __GNUC__
/*code for GNU C compiler */
#elif _MSC_VER
/*usually has the version number in _MSC_VER*/
/*code specific to MSVC compiler*/
#elif __BORLANDC__
/*code specific to borland compilers*/
#elif __MINGW32__
/*code specific to mingw compilers*/
#endif
在此范围内,您可以拥有特定于版本的要求和代码:
#ifdef __GNUC__
# include <features.h>
# if __GNUC_PREREQ(4,0)
// If gcc_version >= 4.0
# elif __GNUC_PREREQ(3,2)
// If gcc_version >= 3.2
# else
// Else
# endif
#else
// If not gcc
#endif
从那里开始,您的 makefile 根据编译器类型、版本等传递适当的编译器标志,一切就绪。
关于c++ - 是否可以从 gcc 的源代码中确定或设置编译器选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25649292/