我将在我的便携式 C 代码中使用#warning
来生成编译时警告。但并非所有平台都支持#warning
。有没有办法找到该平台是否支持#warning
。
#ifdef warning //expecting similar check, not exactly this
#warning ("my message")
#endif
因为我将在很多平台上编译我的代码,所以在某些平台上,如果不支持,可能会出现编译错误。如果有一些宏可用于查找#warning
的可用性,那么我将能够避免在不支持它的平台上构建失败。
答案 0 :(得分:1)
你可以使用这样的东西来检查支持:
#if defined(_MSC_VER) || defined(__GNUC__) || defined(__clang__)
# define HAVE_WARNING
#endif
#ifdef HAVE_WARNING
# pragma message("some warning")
#endif
在需要时向第一个#if
添加更多特定于编译器的检查。
答案 1 :(得分:0)
#pragma message("Warning...")
#pragma message "Oh NO!"
GCC和MSVC都支持。请评论一下Clang?我没有最新版本。
答案 2 :(得分:0)
#warning
主要是gcc扩展,但有些人可能会支持。 Microsoft将需要#pragma message
之类的内容。如果您指的是标准C版本而不是gcc可用的地方,则不能将其称为“可移植”。