Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警告C4503当使用#布拉格语警告“;大约包括 我在编译VS 2010中的以下C++代码时得到C4503警告消息(“修饰名长度超标,名称被截断”,3次),升压1.4.9: #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; } #包括 #包括 #杂注警告(按,1) #包括 #包括 #布拉格警告(pop) 使用名称空间boost::units; typedef std::pair节; std::vector getEmptyVector() { std::向量部分; 回流段; }_C++_Visual Studio 2010_Boost - Fatal编程技术网

警告C4503当使用#布拉格语警告“;大约包括 我在编译VS 2010中的以下C++代码时得到C4503警告消息(“修饰名长度超标,名称被截断”,3次),升压1.4.9: #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; } #包括 #包括 #杂注警告(按,1) #包括 #包括 #布拉格警告(pop) 使用名称空间boost::units; typedef std::pair节; std::vector getEmptyVector() { std::向量部分; 回流段; }

警告C4503当使用#布拉格语警告“;大约包括 我在编译VS 2010中的以下C++代码时得到C4503警告消息(“修饰名长度超标,名称被截断”,3次),升压1.4.9: #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; } #包括 #包括 #杂注警告(按,1) #包括 #包括 #布拉格警告(pop) 使用名称空间boost::units; typedef std::pair节; std::vector getEmptyVector() { std::向量部分; 回流段; },c++,visual-studio-2010,boost,C++,Visual Studio 2010,Boost,让我困惑的是,只有当我删除#pragma指令时,警告才会消失。这有什么解释吗,或者编译器有bug吗?Boost会导致很多错误,IIRC(来自v1.2ish)会管理Boost库中被认为无害的警告。 你看到这个警告是因为你做了他们不期望的事情,并且弄脏了他们的警告管理。 这似乎是一个警告,Boost家伙已经决定为Visual C++编译器打压。 发件人: 警告:超过C4503装饰名称长度 建议:抑制。(请注意,\boost\config\compiler\visualc.hpp包含此全局>抑制…)!

让我困惑的是,只有当我删除
#pragma
指令时,警告才会消失。这有什么解释吗,或者编译器有bug吗?

Boost会导致很多错误,IIRC(来自v1.2ish)会管理Boost库中被认为无害的警告。
你看到这个警告是因为你做了他们不期望的事情,并且弄脏了他们的警告管理。

这似乎是一个警告,Boost家伙已经决定为Visual C++编译器打压。 发件人:

警告:超过C4503装饰名称长度
建议:抑制。(请注意,\boost\config\compiler\visualc.hpp包含此全局>抑制…)!抑制:#杂注警告(禁用: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)
#pragma警告(推送,1)
#杂注警告(禁用:4503)
//C4503.cpp
//使用:/W1/EHsc/c编译
//预计为C4503
#包括
#包括
类字段{};
typedef std::地图屏幕;
typedef std::map WebApp;
typedef std::map WebAppTest;
typedef std::map Hello;
你好,迈沃特;
#布拉格警告(pop)
为此,我刚刚调整了Microsoft帮助示例


如果将
#pragma警告(disable:4503)
置于推送之后,则将得到该警告。如果将其置于之前,则会出现
警告。这意味着即使禁用了上述代码,也会生成C4503警告。

此问题的正确答案可以在以下列表中找到:

pragma警告(pop)弹出推送到堆栈上的最后一个警告状态。在推送和弹出之间对警告状态所做的任何更改都将撤消

推送和弹出之间对警告状态的任何更改都将撤消。这意味着,无论boost头文件本身做了什么更改(它们显然禁用了4503),都将撤消。
您可以在pop后恢复禁用4503。

我正在编译带有警告级别4的项目,如果我在包含Boost头文件时没有使用
#pragma
指令选择性地更改它,我会收到很多警告。有没有一种更为“Boost友好”的方法可以做到这一点?Boost会尝试为不同的编译器抑制不必要的警告。如果你看到很多这样的问题,请用特定的编译器、警告级别和触发警告的标题提交一份错误报告。在我意识到这个问题与全球变暖无关之前,我已经读了三遍。那么忽略这个警告是否合理安全呢。。。为什么在推送后禁用警告会有效地启用警告?