代码之家  ›  专栏  ›  技术社区  ›  moswald Jarod42

你能关闭(特定的)编译器警告为任何头包括从一个特定的位置?

  •  15
  • moswald Jarod42  · 技术社区  · 16 年前

    我有一个第三方库,即使在/W3下也会生成大量警告。我有没有办法告诉编译器,“对这个目录或它的子目录中包含的任何文件禁用C4244”?当然,我不想在我们自己的代码库中禁用警告,也不想跟踪每个可能的include并用 #pragma warning(...

    5 回复  |  直到 16 年前
        1
  •  9
  •   moswald Jarod42    16 年前

        2
  •  5
  •   cpx    16 年前

    你可以放旗子,例如 /wd4600 在里面 VS Project Settings > Command-line Options 告诉编译器抑制特定的 Complier Warnings

        3
  •  5
  •   Praetorian Luchian Grigore    11 年前

    我不知道你的意思是不是不想用 #pragma 指令或不想花时间跟踪正确的指令。如果是后者,那么这就是我过去所做的:

    #ifdef _MSC_VER
    #pragma warning( disable : 4244 )
    #endif
    
    #include "MyHeader.h"
    
    #ifdef _MSC_VER
    #pragma warning( default : 4244 ) /* Reset to default state */
    #endif
    
        4
  •  3
  •   jon hanson    16 年前

    您可以尝试从包含路径中删除第三方项目。然后创建一个子目录,其目录结构和头文件与第三方项目相同,这样所有的#include现在都可以找到头文件。然后在每个假头xxxx.h中设置pragma,然后包含真实的xxxx.h头,然后清除pragma。为了避免递归地包含同一个文件,您必须在include中添加一个额外的dir。

    就我个人而言,我只是浏览一下你的项目,然后添加pragma的。

        5
  •  3
  •   Jesse Chisholm    9 年前

    尝试:

    //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包的所有说明都禁止了警告。