【问题标题】:How do we disable a linker warning with a #pragma warning?我们如何使用#pragma 警告禁用链接器警告?
【发布时间】:2019-10-20 19:14:01
【问题描述】:

我们可以禁用编译器警告

#pragma warning(disable:4966)

我们如何使用#pragma 指令禁用链接器警告?比如:

// Disable linker warning LNK4221
#pragma warning(disable:4221)

【问题讨论】:

标签: c++ c visual-c++ pragma linker-warning


【解决方案1】:

链接器警告不能放在源文件中,因为源文件(.CPP/.C/.H 等)是供编译器使用的,而不是供链接器使用的。编译将从一个或多个文件中生成目标文件(通过一个或多个“翻译单元”)。如果您将#prama disable_linker_warning 放在某个源文件中 - 链接器设置应该转到哪个 .OBJ 文件(链接的一部分)?

链接器设置对项目来说是全局 - 因为 .OBJ 文件被链接以生成最终的 PE 映像,然后将应用链接器警告。您可以在项目设置页面中选择链接器警告。

预处理器指令不会被保存并稍后传播到链接器。它可能导致多个路径歧义(由于多个翻译单元)和其他复杂性。这种链接器功能可能不可靠。

请注意,在 VC++ 中,当您选择单个源文件的属性时,您看不到任何“链接器”设置。

【讨论】:

    【解决方案2】:

    您无法使用当前的 MSVC 工具集禁用此警告。

    是的,警告确实非常有用,但您可以随意忽略这一点,尤其是在许多情况下。只要确保您的情况是其中一种情况,然后继续前进。例如,您确定需要包含导致此警告的编译单元吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2018-07-02
      相关资源
      最近更新 更多