如何消除GCC对
#pragma region
的警告?
我添加了pragma region
以便更轻松地查看代码,但它会报告#pragma region
的警告。
我正在使用Visual Studio 2010。#pragma region
的警告?
我添加了pragma region
以便更轻松地查看代码,但它会报告#pragma region
的警告。
我正在使用Visual Studio 2010。gcc有这样一个警告标志:
-Wunknown-pragmas 当GCC遇到无法理解的#pragma指令时发出警告。如果使用此命令行选项,甚至会对系统头文件中的未知pragma发出警告。如果警告只是由于-Wall命令行选项启用,则不会出现这种情况。
和往常一样,您可以否定它,这意味着未知的pragma将不会收到警告,即使用-Wno-unknown-pragmas
。
请注意,-Wno-unknown-pragmas
必须出现在打开此警告的任何命令行标志之后,例如-Wall
- 这也禁用了所有未知pragma的警告,因此请谨慎使用。
unknown-pragmas
)有时可以拯救生命,如果你搞砸了omp
指示符或类似的东西... - Tomasz Gandor不要在GCC上使用它? :)
目前我能想到的最简单的解决方案是使用预处理条件:
#ifndef __GNUC__
#pragma region
#endif
// Stuff...
#ifndef __GNUC__
#pragma endregion
#endif
虽然不太美观或易读,但可以让代码在GCC上编译时无警告。
#
(与##
相对)并不表示预处理器指令,而是表示字符串化运算符。紧跟在#
操作符后面的必须是宏参数名称。请注意,这里并没有其他含义。 - David Hammen_Pragma
运算符,您可以有条件地定义一个宏为在使用MSVC时的_Pragma("region")
,否则将其定义为空。 - Jonathan Wakely#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
... Code using Unknown pragmas ...
#pragma GCC diagnostic pop
这似乎是MSVC特有的编译指示符,因此您应该使用:
#ifdef _MSC_VER
#pragma region
#endif
<code here>
#ifdef _MSC_VER
#pragma endregion
#endif
pragma
区域之间折叠了! - Rui Monteiro