gpt4 book ai didi

c++ - 在 Boost 周围使用 "#pragma warning"时出现警告 C4503 包括

转载 作者:行者123 更新时间:2023-11-30 03:03:03 24 4
gpt4 key购买 nike

在 VS 2010 中使用 Boost 1.4.9 编译以下 C++ 代码时,我收到 C4503 警告消息(“修饰名称长度超出,名称被截断”,3 次):

#include <vector>
#include <map>

#pragma warning (push, 1)
#include <boost/units/quantity.hpp>
#include <boost/units/si/plane_angle.hpp>
#pragma warning (pop)

using namespace boost::units;

typedef std::pair<quantity<si::plane_angle>, quantity<si::plane_angle> > Section;

std::vector<Section> getEmptyVector()
{
std::vector<Section> sections;
return sections;
}

令我困惑的是,只有当我删除 #pragma 指令时警告才会消失。是否有对此的解释,或者编译器是否有错误?

最佳答案

这似乎是 boost 人员决定为 Visual C++ 编译器抑制的警告。

来自 here :

Warning: C4503 decorated name length exceeded
Suggestions: Suppress. (Note that \boost\config\compiler\visualc.hpp includes this global > suppression...)! Suppression: #pragma warning(disable:4503)

现在是编译器。请注意以下代码:

#pragma warning (push, 1)
#pragma warning (disable:4503)

// C4503.cpp
// compile with: /W1 /EHsc /c
// C4503 expected
#include <string>
#include <map>

class Field{};

typedef std::map<std::string, Field> Screen;
typedef std::map<std::string, Screen> WebApp;
typedef std::map<std::string, WebApp> WebAppTest;
typedef std::map<std::string, WebAppTest> Hello;
Hello MyWAT;

#pragma warning (pop)

我刚刚针对这个 warning 调整了 Microsoft 帮助示例

如果您将 #pragma warning (disable:4503) 放在推送之后,您将收到警告。如果你把它放在之前,则没有警告。这意味着上面的代码会生成 C4503 警告,即使它已被禁用。

关于c++ - 在 Boost 周围使用 "#pragma warning"时出现警告 C4503 包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com