当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《#warning预处理器指令的可移植性》经验,为你挑选了2个好方法。

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



1> nolandda..:

应该注意的是,MSVC使用以下语法:

#pragma message ( "your warning text here" )

通常的#warning语法会产生致命错误

C1021: invalid preprocessor command 'warning'

所以它不适合那些编译器.


当MS以正确的方式做事时,这是极少数情况之一.
如果你在消息中加上"警告",那么它仍会被视为警告,例如#pragma message("warning:foo")
在MSVC 2008中,`#pragma message`也不会生成警告 - 它只是将文本输出到构建日志.因此,它不会显示在"错误列表"窗口中,也不会增加警告的总数.
fwiw,这个语法也适用于openwatcom.(是的,我碰到了一个旧线程.人们会永远这样谷歌的东西)

2> Greg Hewgill..:

如果编译器不支持#warning,则可能会发出错误.与#pragma不同,不建议预处理器忽略它不理解的指令.

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


@ PeterA.Schneider:当然在2008年我没有!
显然你从未尝试过MS Visual Studio Professional 2015 ;-).
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有