首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >#warning预处理器指令的可移植性

#warning预处理器指令的可移植性
EN

Stack Overflow用户
提问于 2008-10-05 03:40:47
回答 5查看 44.4K关注 0票数 58

我知道#warning指令不是标准的C/C++,但有几个编译器支持它,包括gcc/g++。但对于那些不支持它的人,他们会默默地忽略它,还是会导致编译失败?换句话说,我可以在我的项目中安全地使用它,而不会破坏不支持它的编译器的构建吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-05 03:53:14

如果编译器不支持#warning,那么它很可能会发出一个错误。与#杂注不同的是,没有建议预处理器忽略它不理解的指令。

话虽如此,我已经在各种不同的(相当常见的)平台上使用过编译器,它们都支持#warning。

票数 31
EN

Stack Overflow用户

发布于 2008-10-05 03:56:32

即使您的编译中没有包含代码块,您也很可能会从无法识别#warning的编译器那里得到至少一个无法识别的指令警告。这可能会被视为错误,也可能不会被视为错误-编译器可以合法地将其视为错误,但许多错误会更加松散。

你知道(你能说出)除了GCC/G++之外还有其他编译器提供#warning吗?编辑: Sun Solaris 10 (Sparc)和Studio 11 C/C++编译器都接受#warning。

票数 3
EN

Stack Overflow用户

发布于 2008-10-05 04:20:20

我曾经在Atmel处理器的编译器上遇到过这个问题。由于未知的#warning标记,它确实生成了预处理器错误。

不幸的是,解决方案似乎是将整个源码树转换为使用#杂注等效项,并接受如果使用gcc,构建行为将会有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/171435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档