导航
  • 主页
  • VC综合技术
  • MFC新技术
  • 互联网技术
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

可以用#pragma忽略链接器生成的warning吗?

w_anthony 2009-08-04 10:46:55
#pragma warning(disable:4217)所忽略的是编译器生成的warning,也就是warning C4217。
那么链接器生成的warning LNK4217可以用#pragma忽略吗?

...全文
333 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dch4890164 2009-08-05
编译器能提供warning,不知道那是一件多么幸运的事
重视warning
回复
ouyh12345 2009-08-05
有时候warning也得重视,不能忽略
回复
沙漠黑鸟 2009-08-05
Warning!应该当做错误对待!恩恩!
回复
jyh_baoding 2009-08-05
#pragma warning 当然可以,好象也可用IDE的环境设置
回复
w_anthony 2009-08-05
首先可以非常确信这个warning LNK4217没有什么影响,在项目属性的链接器里面附加选项加个/ignore:4217也可以屏蔽警告信息,而且就算开着警告也不影响链接,只不过是看起来不爽而已。
这个warning是链接器而非编译器生成的,所以上面说的#pragma warning(disble:4271)是不行的,如果#pragma可以做到,那么请提供一个正确的写法。

另外确实如oyljerry所说,这是链接一个静态lib产生的warning,本地符号_malloc在XX函数中被导入,也就是对应这种形式call dword ptr[__imp__malloc],其中dword ptr[__imp__malloc]的内存值是_malloc,这对于程序绝对没有影响,所以才希望屏蔽这类warning。
回复
bohut 2009-08-04
[转]VC中#pragma warning指令
该指令允许有选择性的修改编译器的警告消息的行为
指令格式如下:
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]
#pragma warning( push[ ,n ] )
#pragma warning( pop )
主要用到的警告表示有如下几个:

once:只显示一次(警告/错误等)消息
default:重置编译器的警告行为到默认状态
1,2,3,4:四个警告级别
disable:禁止指定的警告信息
error:将指定的警告信息作为错误报告

如果大家对上面的解释不是很理解,可以参考一下下面的例子及说明

#pragma warning( disable : 4507 34; once : 4385; error : 164 )
等价于:
#pragma warning(disable:4507 34) // 不显示4507和34号警告信息
#pragma warning(once:4385) // 4385号警告信息仅报告一次
#pragma warning(error:164) // 把164号警告信息作为一个错误。
同时这个pragma warning 也支持如下格式:
#pragma warning( push [ ,n ] )
#pragma warning( pop )
这里n代表一个警告等级(1---4)。
#pragma warning( push )保存所有警告信息的现有的警告状态。
#pragma warning( push, n)保存所有警告信息的现有的警告状态,并且把全局警告
等级设定为n。
#pragma warning( pop )向栈中弹出最后一个警告信息,在入栈和出栈之间所作的
一切改动取消。例如:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
#pragma warning( pop )

在这段代码的最后,重新保存所有的警告信息(包括4705,4706和4707)

在使用标准C++进行编程的时候经常会得到很多的警告信息,而这些警告信息都是不必要的提示,
所以我们可以使用#pragma warning(disable:4786)来禁止该类型的警告

在vc中使用ADO的时候也会得到不必要的警告信息,这个时候我们可以通过
#pragma warning(disable:4146)来消除该类型的警告信息
回复
oyljerry 2009-08-04
link的不可以...你修改一下你的导入库等
回复
雪影 2009-08-04
LNK4217 是错误吧,不是警告
应该不可以
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……