2017-08-05 1 views
3

Ich benutze Visual Studio Code 1.14.2 auf macOS Sierra und habe die Microsoft C/C++ ms-vscode.cpptools Erweiterung installiert, aber habe Probleme beim Einrichten der Include-Pfade, um Standardbibliothek Header richtig von IntelliSense überprüft zu bekommen, ohne Fehler zu erzeugen und zurückzufallen zum Tag-Parser-Mechanismus.Was sind die korrekten macOS vscode intellisense C++ - Include-Pfade für die Standardbibliothek?

Der Standard c_cpp_properties.json enthält die folgenden für diese vscode Version:

{ 
    "configurations": [ 
    { 
     "name": "Mac", 
     "includePath": [ 
     "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1", 
     "/usr/local/include", 
     "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include", 
     "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", 
     "/usr/include", 
     "${workspaceRoot}" 
     ], 
     "defines": [], 
     "intelliSenseMode": "clang-x64", 
     "browse": { 
     "path": [ 
      "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1", 
      "/usr/local/include", 
      "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include", 
      "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", 
      "/usr/include", 
      "${workspaceRoot}" 
     ], 
     "limitSymbolsToIncludedHeaders": true, 
     "databaseFilename": "" 
     } 
    }, 
... 
} 

Zum Beispiel mit einem einfachen C++ Datei wie:

#include <exception> 

int main() { 
    return 0; 
} 

Die #include <exception> unterstrichen wird. Bewegen der Maus über sie heißt es:

Datei: 'file: ///path/to/vscode.cc' Schwere: 'Info' Meldung: ‚# include Fehler erkannt. Bitte aktualisieren Sie Ihren includePath. IntelliSense-Funktionen für diese Übersetzungseinheit (/path/to/vscode.cc) werden vom Tag-Parser bereitgestellt. an: '1,1' Quelle: ''

und

Datei: 'file: ///path/to/vscode.cc' Schwere: 'Info' Nachricht '1,1' Quelle:: 'nicht Open-Source-Datei "endian.h" (Abhängigkeit von "Ausnahme") kann' bei ''

ich eine Suche nach meinem Dateisystem für endian.h tat. Beschneiden Sie die Möglichkeiten, die tatsächlich relevant scheinen für Host-Entwicklung (das heißt dropping iOS/WatchOS/etc.):

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/i386/endian.h 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/i386/endian.h 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/endian.h 
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h 
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h 
/usr/include/i386/endian.h 
/usr/include/machine/endian.h 

Wer weiß, was die richtige Lösung für dieses Problem ist?

+0

Ich sah https://stackoverflow.com/questions/37522462/visual-studio-code-includepath und die Kommentare dazu, aber trotz der Antworten dort sehe ich immer noch das gleiche Problem. Ich habe versucht, den vorgeschlagenen Pfad zur Liste der Include-Pfade hinzuzufügen, und es hat nicht geholfen. – robswain

Antwort

3

Dies erwies sich als Konfigurationsfehler in der IntelliSense-Engine. Mac-Header erwartet das Symbol __LITTLE_ENDIAN__ definiert werden und es war nicht. Wir haben dieses Problem im letzten Update der Erweiterung behoben, sodass es nicht mehr notwendig ist, einen Pfad zu endian.h hinzuzufügen.

Verwandte Themen