Technologieaustausch

Konfigurieren Sie den C-Compiler (.sublime-build) in Sublime, um die Verwendung von C 20 in Sublime zu implementieren, Tutorial für Anfänger

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Vorbereitende Vorbereitung

Zuerst müssen wir die C++-Umgebung vorbereiten. Wenn Sie der Meinung sind, dass Ihre aktuelle C++-Umgebung konfiguriert ist und die C++-Version Ihren täglichen Anforderungen gerecht wird, können Sie die C++-Version mit den folgenden beiden Befehlen abfragen.

g++ -v
  • 1
g++ --version
  • 1

Beurteilen Sie einfach, ob Ihre Anforderungen durch die zurückgegebene Version erfüllt werden können. Wenn Sie der Meinung sind, dass die aktuelle Version Ihre spätere Verwendung unterstützen kann, fahren Sie bitte direkt mit der zweiten Stufe der Konfiguration der JSON-Datei fort.

  • GCC 4.8: Unterstützung von C++11 (teilweise)
  • GCC 4.9: Unterstützt C++11 und C++14 (teilweise)
  • GCC 5: Volle Unterstützung für C++14
  • GCC 6: Unterstützt C++14 und C++17 (teilweise)
  • GCC 7: Unterstützt C++17 (meistens)
  • GCC 8: Unterstützt C++17 vollständig, teilweise C++20
  • GCC 9: Unterstützt weitere C++20-Funktionen
  • GCC 10: Unterstützt die meisten C++20-Funktionen
  • GCC 11: Umfassendere Unterstützung für C++20
  • GCC 12: Unterstützt fast alle C++20-Funktionen
  • GCC 13 und höher: Vollständige Unterstützung für C++20 hinzufügen und Unterstützung für C++23 starten

Wenn Sie feststellen, dass Sie Ihr C++ nicht konfiguriert haben oder das Gefühl haben, dass die aktuelle Version das tägliche Lernen nicht unterstützt, müssen Sie eine herunterladenMingw konfiguriert die C++-Umgebung

Derzeit verwende ich mein aktuellstes Mingw als Demonstration

![[Eingefügtes Bild 20240711232026.png]]

Entpacken Sie es nach dem Herunterladen in einen Ihnen bekannten Ordner, öffnen Sie den entpackten Dateipfad und suchen Sie nach einer Bin-Datei

[[Eingefügtes Bild 20240711232411.png]]

Kopieren Sie nach dem Öffnen den obigen Dateipfad. Verwenden Sie beim Dekomprimieren am besten den vollständigen englischen Pfad.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Bearbeiten Sie Systemumgebungsvariablen

Eingefügtes Bild 20240711232650

  1. Umgebungsvariablen…
    ![[Eingefügtes Bild 20240711232725.png]]

  2. Bearbeiten Sie den Inhalt im Pfad unten, Bearbeiten->Neu, geben Sie den Pfad ein, wählen Sie diesen Pfad aus und verschieben Sie ihn nach oben.
    ![[Eingefügtes Bild 20240711232813.png]]

  3. Klicken Sie weiterhin auf „OK“, um den Vorgang abzuschließen.

Ich teste die G++-Version.

2. Umgebungskonfiguration

Extras -> Kompilierungssystem -----> Neues Kompilierungssystem ... generiert eine *.sublime-build-Datei, in der die C++-JSON-Datei konfiguriert ist. Natürlich können Sie auch die vorhandene Kompilierungsdatei ändern.

1. Dumme Konfigurationsmethode

Kopieren Sie den folgenden Code in die oben genannte Datei, speichern Sie ihn und wählen Sie die gerade bearbeitete JSON-Datei erneut aus, um C++ zu kompilieren.

{  
   "shell_cmd": "g++  -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. Grundlegende Konfigurationsmethode

standardmäßig,g++ Compiler verwenden normalerweise nicht den neuesten C++-Standard, sondern einen stabilen Standardstandard (normalerweise einen älteren Standard wie C++14 oder C++17), um die Kompatibilität mit älterem Code sicherzustellen.Also, wenn Sie es nicht explizit angeben-std=c++20 oder-std=c++23, kompiliert der Compiler möglicherweise mit einem älteren Standard, was bei der Verwendung von Funktionen des neuen Standards zu Fehlern führen kann.

Wenn wir daher die neueste Kompilierungsmethode verwenden möchten, müssen wir uns auf die oben genannte maximale C++-Version beziehen, die von unserem Compiler unterstützt wird, um unsere JSON-Datei so zu aktualisieren, dass sie mit der neuesten Version von C++ kompiliert wird.

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Die spezifische Änderung besteht nur aus einer Codezeile

![[Eingefügtes Bild 20240711234819.png]]

3. Eingehende Analyse

Grundlegende Konfigurationselemente

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Erstellen Sie Textvariationen
{
	[  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
gesamt
{  
   "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
   "variants":  
   [  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]  

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39