我有一些遗留代码,需要传入特定的gcc标志。我可以为这些标志添加预处理器检查吗?
例如,假设我需要-fno-strict-aliasing,我可以这样做吗:
#ifndef _FNO_STRICT_ALIASING
#error -fno-strict-aliasing is required!
#endif发布于 2011-09-23 01:12:16
您可以使用
#pragma GCC optimize "no-strict-aliasing"使用该标志编译文件(覆盖在命令行中指定的内容)。您还可以使用
__attribute__((optimize("no-strict-aliasing")))要将该标志应用于源文件中的单个函数...
发布于 2011-09-23 01:21:49
绝对没有#定义,至少在我的GCC版本上是这样。
要查看所有预定义的预处理器符号:
g++ -dM -E - < /dev/null我不认为有任何方法来测试这些选项。但是,如果您使用的是GCC 4.4或更高版本,则可以使用"optimize" function attribute或"optimize" #pragma来启用针对每个函数或每个文件的特定选项。
例如,如果将以下代码添加到公共头文件中:
#if defined(__GNUC__)
#pragma GCC optimize ("no-strict-aliasing")
#else
#error "You are not using GCC"
#endif...it应该为包含头文件的每个文件启用该选项。
更新
好的,我花了大约10分钟才写出这个答案。无论如何,我将把它留在这里,以获得指向GCC文档的链接。
https://stackoverflow.com/questions/7518597
复制相似问题