【发布时间】:2009-06-10 15:17:47
【问题描述】:
我有一个项目,我刚刚发现警告 C4244(可能丢失数据)正在被抑制。我强烈怀疑某些糟糕的 MS 标头正在抑制此警告,并为所有包含所述标头的翻译单元保留它,但我尚未确定其无数标头中的哪一个可能有问题。
因此,与任何其他编程问题一样,我想首先进行二进制搜索,打印出当前的警告级别,如果可能的话,在我的主预编译头文件中打印出任何被抑制的警告。
有谁知道我可能会使用什么编译器指令,或者我可以采取什么方法来提供这些信息?
我无法告诉你,当调用者违反合同并试图向我发送整数而不是带符号字节(有导致了我正在尝试解决的当前错误)。
想法?
注意事项:
在我的整个解决方案中搜索#pragma 只得到平衡的#pragma 警告(禁用:xxxx)声明,然后是#pragma 警告(默认值:xxxx)。这些都没有引用 4244。
在整个解决方案中搜索 4244 不会返回任何匹配项(我从不覆盖该警告,我的任何包含的库、子项目等也不会覆盖)。
在整个 MS 中对 4244 的搜索包括返回一些引用,看起来是平衡的,或者几乎是平衡的,这取决于在调用它们之前设置的#define 符号。因此,我怀疑 MS 有过错(再加上 MS 之前在他们的标题中做草率工作的历史)。
【问题讨论】:
标签: visual-c++ compiler-warnings pragma