我有一个第三方库,即使在/ W3下也会产生大量警告。有没有办法让我告诉编译器,“为此目录或其子目录中包含的任何文件禁用C4244”?当然,我不想在我们自己的代码库中禁用警告,也不想跟踪每个可能的包含并用#pragma warning(...
答案 0 :(得分:9)
我不想在这里回答我自己的问题,但我担心在这种情况下“正确”的答案是:这是不可能的。
答案 1 :(得分:5)
您可以在/wd4600
中放置VS Project Settings > Command-line Options
等标志,告诉编译器禁止特定Complier Warnings
答案 2 :(得分:4)
我不确定你是否意味着你不想用#pragma
指令包装你的include语句,或者不想花时间追踪正确的指令。如果是后者,那么这就是我过去所做的:
#ifdef _MSC_VER
#pragma warning( disable : 4244 )
#endif
#include "MyHeader.h"
#ifdef _MSC_VER
#pragma warning( default : 4244 ) /* Reset to default state */
#endif
答案 3 :(得分:3)
您可以尝试从包含路径中删除第三方项目。然后创建一个与第三方项目具有相同目录结构和头文件的子目录,以便所有#includes现在找到你的标题。然后在每个假标题xxxx.h中设置pragma然后包含真正的xxxx.h标头,然后清除pragma。为避免递归地包含相同的文件,您必须在#include中添加额外的目录。
就个人而言,我只是通过你的项目并添加编译指示。
答案 4 :(得分:2)
尝试:
//in wrapper_3rdParty.h
#pragma once
#pragma warning(push)
#pragma warning(disable : 4244)
#include "3rdParty.h"
#pragma warning(pop)
然后在您的代码中,只需#include "wrapper_3rdParty.h"
。
处理警告default
行为的问题,并且使用htat包的所有内容都会禁止警告。