2017-02-20 2 views
-3

VS120(Visual Studio 2013)ツールセットを使用してVisual Studioを使用して検索するVSソリューション(多数のプロジェクトを含む)があります。コンテナにはVS140ツールセットとの違いをもたらす順序が含まれていますが、そうではありません。VS120

ここで、VS120ツールセットでは完全に実装されていないC++ 11の機能を利用するライブラリを使い始めたいので、VS140に切り替えるのがいいようです。

しかし、私は突然、標準ライブラリコンテナ(実際には6478個)をコンパイルする際にいくつかのエラーが発生します。

私はいくつかのアウトコードをコメント、調査やった、これまでのところ、私は私は1つの特定のソースファイルをコンパイルする場合は今すぐ上の行には、いくつかがダウンして含まれて発生し、エラーはコンパイルが

#include <queue> 

に到達したときに起こることがわかりました、他の多くの含まれています。

私のソースファイルの先頭に他のインクルードの前に正確に同じ行を置くと、エラーなしでビルドされます。

私がしようとウサギの穴のさらに下に消える前に、だから、

VS120

が、唯一のVS140ツールと...何かが問題を引き起こし、他のヘッダーの1つに設定または変更されていることではないようですこれを引き起こしているものを見つけるために、誰かが何か考えを持っていたかどうか疑問に思っていましたか?

編集:

申し訳ありませんが、私はエラーの例を投稿することを忘れていました。

Severity Code Description Project File Line Suppression State 
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 166 
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 424 
Error C2334 unexpected token(s) preceding '{'; skipping apparent function body GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 167 
Error C2334 unexpected token(s) preceding '{'; skipping apparent function body GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 426 
Error C2206 'swap': typedef cannot be used for function definition GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 180 
Error C2206 'swap': typedef cannot be used for function definition GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 442 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 74 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 103 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 166 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 333 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 376 
Error C2091 function returns function GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 424 
Error C2065 '_Left': undeclared identifier GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 180 
Error C2065 '_Right': undeclared identifier GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 180 
Error C2065 '_Left': undeclared identifier GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 442 
Error C2065 '_Right': undeclared identifier GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 442 
Error C2061 syntax error: identifier 'value' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 74 
Error C2061 syntax error: identifier 'value' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 102 
Error C2061 syntax error: identifier 'value' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 333 
Error C2061 syntax error: identifier 'value' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 374 
Error C2061 syntax error: identifier '_Swap_adl' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 424 
Error C2059 syntax error: '(' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 166 
Error C2059 syntax error: ')' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 166 
Error C2059 syntax error: '{' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 167 
Error C2059 syntax error: '(' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 424 
Error C2059 syntax error: ')' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 424 
Error C2059 syntax error: '{' GuiDemo-app C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\queue 426 
+1

どのようなエラーメッセージが表示されますか?サンプルを投稿してください。 –

+0

申し訳ありませんが、私は質問を投稿したときにそれを行うことを意味しましたが、何とか忘れました。 –

答えて

1

最も可能性の高い原因は、<queue>ヘッダが使用する何かを再定義#include <queue>前にヘッダーの1つでマクロ、です。

あなたが持っている場合:

#include "some_project_header.h" 
#include <queue> 

some_project_header.hは含まれています

#define emplace 1 
// ... 

コンパイラはstd::queue::emplaceメンバ関数を見たとき、それは1代わりのemplace例えばを言うので、それは完全に、<queue>ヘッダーのコンパイルを壊します

template<class T, class Container = deque<T>> 
class queue { 
    // ... 
    template <class... Args> 
    reference 1(Args&&... args) 
    { return c.emplace_back(std::forward<Args>(args)...); } 

VS120は、それはその問題を持っていない(C++ 11に添加した)、まだstd::queue::emplace部材を実装していない場合。

私の推測が正しいとすれば、あなたのヘッダーには、使用すべきではない名前が使用されているため、修正する必要があります。

#include <queue>をファイルの先頭に移動すると、問題の前に他のヘッダーに含められるようになりますが、実際に問題は解決されず、単に非表示になります。

+0

ありがとう、私はVS120がC++ 11のライブラリの変更の一部を実装したのと同じ方法で実装している可能性を完全に見逃してしまった理由について、標準ライブラリファイルが変更された理由を考えようとしていました言語の変化の一部。あなたが記述しているのは、マクロ定義がソースをオーバーライドしているかのように、シンタックスが完全に乱れていることを示唆している、私が見ているエラーに適合しているようです。 –

+1

解決済み!第三者のライブラリが#defineを使用してnoexceptをクローバーにして、同じコードがVisual Studio 2013以前でビルドされ、noexceptをサポートしていた非VSコンパイラ(VS2015より前のVSで実装されていなかった)が判明しました。 VS140ツールセットライブラリで使用されて以来、物事は完全に混乱していました。あなたの助けをもう一度お返事いただきありがとうございます。答えはかなり後ろ向きに見えますが、時には問題を抱えている人が、近くにいる人にとって本当に明らかなものがあるかどうかを見ることができます。 –

関連する問題