Condivisione della tecnologia

Configura il compilatore C (.sublime-build) in sublime per implementare l'uso di C 20 in sublime, tutorial per principianti

2024-07-12

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

1. Preparazione preliminare

Per prima cosa dobbiamo preparare l'ambiente C++. Naturalmente, se ritieni che il tuo attuale ambiente C++ sia configurato e che la versione C++ possa soddisfare le tue esigenze quotidiane, puoi utilizzare i due comandi seguenti per interrogare la versione C++.

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

Giudica semplicemente se le tue esigenze possono essere risolte dalla versione restituita. Se ritieni che la versione corrente possa supportare il tuo utilizzo successivo, passa direttamente alla seconda fase di configurazione del file JSON.

  • CCG 4.8: Supporto C++11 (parziale)
  • CCG 4.9: Supporta C++11 e C++14 (parziale)
  • CCG 5: Supporto completo per C++14
  • CCG 6: Supporta C++14 e C++17 (parziale)
  • CCG 7: Supporta C++17 (principalmente)
  • CCG 8: supporta completamente C++17, supporta parzialmente C++20
  • CCG 9: supporta più funzionalità C++20
  • CCG 10: supporta la maggior parte delle funzionalità C++20
  • CCG 11: supporto più completo per C++20
  • CCG 12: supporta quasi tutte le funzionalità di C++20
  • GCC 13 e successivi: aggiungi il supporto completo per C++20 e avvia il supporto per C++23

Se scopri di non aver configurato il tuo C++ o ritieni che la versione corrente non possa supportare l'apprendimento quotidiano, devi scaricare unMingw configura l'ambiente C++

Attualmente sto usando il mio ultimo Mingw come dimostrazione

![[Immagine incollata 20240711232026.png]]

Dopo il download, decomprimilo in una cartella che conosci, apri il percorso del file decompresso e trova un file bin

[[Immagine incollata 20240711232411.png]]

Dopo averlo aperto, copia il percorso del file sopra. È meglio utilizzare il percorso completo in inglese durante la decompressione.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Modifica le variabili di ambiente del sistema

Immagine incollata 20240711232650

  1. Variabili ambientali…
    ![[Immagine incollata 20240711232725.png]]

  2. Modifica il contenuto in Percorso sottostante, Modifica->Nuovo, metti il ​​percorso in alto, seleziona questo percorso e spostalo in alto.
    ![[Immagine incollata 20240711232813.png]]

  3. Continua a fare clic su OK per completare.

Sto testando la versione g++.

2. Configurazione dell'ambiente

Strumenti -> Sistema di compilazione-----> Nuovo sistema di compilazione... genererà un file *.sublime-build in cui è configurato il file JSON C++ Naturalmente, puoi anche modificare il file di compilazione esistente.

1. Metodo di configurazione insensato

Copia il seguente codice nel file menzionato sopra, salvalo e seleziona nuovamente il file JSON appena modificato per compilare C++.

{  
   "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. Metodo di configurazione di base

per impostazione predefinita,g++ I compilatori in genere non utilizzano lo standard C++ più recente, ma utilizzano invece uno standard predefinito stabile (in genere uno standard precedente come C++14 o C++17) per garantire la compatibilità con il codice precedente.Quindi se non lo specifichi esplicitamente-std=c++20 O-std=c++23, il compilatore potrebbe compilare utilizzando uno standard precedente, che può causare errori quando si utilizzano funzionalità del nuovo standard.

Pertanto, se vogliamo utilizzare l'ultimo metodo di compilazione, dobbiamo fare riferimento a quanto sopra, la massima versione C++ supportata dal nostro compilatore, così da aggiornare il nostro file JSON per compilare con l'ultima versione di C++.

{  
   "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

La modifica specifica è solo una riga di codice

![[Immagine incollata 20240711234819.png]]

3. Analisi approfondita

Elementi di configurazione di base

{  
   "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
Costruisci variazioni del testo
{
	[  
       {  
           "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
totale
{  
   "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