4

MinGW (バージョン 4.7.2) を Visual Studio 2010 で動作させて、新しい C++11 機能の一部を使用しようとしています (残念ながら、私はまだ WindowsXP を使用しており、Visual Studio 2012 を使用できません)。まず、ファイル -> 新しいプロジェクト -> Visual C++ -> 一般 -> Makefile-Project でプロジェクトを作成しました。

General:
Build Command Line: mingw32-make.exe
Rebuild All Command Line: mingw32-make.exe rebuild all
Clean Command Line: mingw32-make.exe clean all

IntelliSense:
Include Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2\include\c++;C:\MinGW\include;
Assembly Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2;C:\MinGW\lib;
Additional Arguments: -std=c++11

そして、次の内容でメイクファイルを作成しました。

all:
    g++ -std=c++11 -pthread -o Makefile_Test.exe main.cpp

コンパイルは問題なく実行されますが、ほとんどすべてが Visual Studio エディターで下線が引かれた波状の赤です。すなわち

std::vector<std::thread> threads;

std::vector-> 'エラー: 名前空間 std にメンバ ベクトルがありません'

std::thread-> 'エラー: 名前空間 std にメンバー スレッドがありません'

std::cout << "";

std::cout-> 'エラー: 名前空間 std にメンバ cout がありません'

しかし、もちろん、対応するヘッダーを含めました。Visual Studio はそれらを見つけることもできます (カーソルを #include に置く -> Ctrl+Shift+G でヘッダーが開きます)。私の MinGw フォルダーは次のようになります。

+ MinGW
|- bin
|- doc
|- include
|+ lib
 |- gettext
 |+ gcc
  |+ mingw32
   |+ 4.7.2
    |- debug
    |+ include
     |- c++
     |...
    |- include-fixed
    |- install-tools
|- libexec
|- mingw32
|- msys
|- share
|- var

また、sdf ファイルを数回削除して、Visual Studio に最初から再構築させようとしましたが、これらすべてのエラーが再び表示されました。

ここで私が間違っていることはありますか?

4

2 に答える 2

9

残念ながら、これらの赤い波線を完全に無効にしない限り、それらの赤い波線を消す試みをあきらめる必要があります(たとえば、存在しない関数の呼び出しでさえもマークされないようにします)。

その理由は、Visual Studio の Intellisense が EDG の C++ コンパイラへの別のフロントエンドを使用してプログラムを解析し、無効なステートメントまたは式の下に赤い波線を配置する可能性があり、VS2010 で Intellisense によって使用されるバージョンが (明らかに) C に完全に準拠していないためです。 +11.

したがって、コンパイラとして GCC 4.7.2 に切り替えると、C++11 プログラムのビルドに役立ちますが、Intellisense の動作には影響しません。

赤い波線を完全に無効にしたい場合は、[ツール] -> [オプション] -> [テキスト エディター] -> [C/C++] -> [詳細設定] を選択し、[波線を無効にする] を [True] に設定します。

于 2013-03-28T16:03:18.327 に答える
1

OPが説明したようにMakefileプロジェクトテンプレートを使用します。プロジェクトのプロパティに適切なインクルード ディレクトリを追加することで、VC 2013 および 2015 コミュニティ エディションのインテリセンスを動作させることができました。

  1. 開くProject menu
  2. 選択する{Project Name} Properties
  3. 開くConfiguration Properties
  4. VC++ Directoriesツリーメニューで選択
  5. Includes Directoriesディレクトリをセクションに追加

Intellisense に読み込む項目を含むディレクトリを追加する必要があります。私がgtkmmプロジェクトに取り組んでいるとしましょう。glibmmディレクトリも含めて、Glib::ustringsが波線を取得しないようにします。glibmm.h がソース ファイルに直接含まれていなくても。

于 2015-09-09T22:42:05.583 に答える