Teknologian jakaminen

Määritä C-kääntäjä (.sublime-build) sublimessa toteuttaaksesi C 20:n käytön ylevässä aloittelijan opetusohjelmassa

2024-07-12

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

1. Alustava valmistelu

Ensin meidän on valmisteltava C++-ympäristö, jos sinusta tuntuu, että nykyinen C++-ympäristösi on konfiguroitu ja C++-versio vastaa päivittäisiä tarpeitasi, voit käyttää seuraavia kahta komentoa C++-version kyselyyn.

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

Arvioi vain, voidaanko tarpeitasi ratkaista palautetulla versiolla. Jos uskot, että nykyinen versio tukee myöhempää käyttöäsi, siirry suoraan JSON-tiedoston määritysten toiseen vaiheeseen.

  • GCC 4.8: Tuki C++11 (osittainen)
  • GCC 4.9: Tukee C++11 ja C++14 (osittainen)
  • GCC 5: Täysi tuki C++14:lle
  • GCC 6: Tukee C++14 ja C++17 (osittainen)
  • GCC 7: Tukee C++17:ää (enimmäkseen)
  • GCC 8: Tukee täysin C++17:ää, tukee osittain C++20:tä
  • GCC 9: Tukee enemmän C++20-ominaisuuksia
  • GCC 10: Tukee useimpia C++20-ominaisuuksia
  • GCC 11: Kattavampi tuki C++20:lle
  • GCC 12: Tukee lähes kaikkia C++20:n ominaisuuksia
  • GCC 13 ja uudemmat: Lisää täysi tuki C++20:lle ja aloita tuki C++23:lle

Jos huomaat, että et ole määrittänyt C++:aa tai sinusta tuntuu, että nykyinen versio ei tue päivittäistä oppimista, sinun on ladattavaMingw määrittää C++-ympäristön

Tällä hetkellä käytän nykyistä uusinta Mingw:täni esittelynä

![[Liitetty kuva 20240711232026.png]]

Lataamisen jälkeen pura se tuntemaasi kansioon, avaa puretun tiedoston polku ja etsi bin-tiedosto

[[Liitetty kuva 20240711232411.png]]

Kun olet avannut sen, kopioi yllä oleva tiedostopolku. On parasta käyttää koko englanninkielistä polkua purettaessa.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Muokkaa järjestelmäympäristömuuttujia

Liitetty kuva 20240711232650

  1. Ympäristömuuttujat…
    ![[Liitetty kuva 20240711232725.png]]

  2. Muokkaa sisältöä Path alla, Muokkaa-> Uusi, aseta polku ylös, valitse tämä polku ja siirrä se ylös.
    ![[Liitetty kuva 20240711232813.png]]

  3. Suorita loppuun napsauttamalla OK.

Testaan ​​g++-versiota.

2. Ympäristön konfigurointi

Työkalut -> Käännösjärjestelmä-----> Uusi käännösjärjestelmä... luo *.sublime-build-tiedoston, johon C++ JSON-tiedosto on määritetty. Voit tietysti myös muokata olemassa olevaa käännöstiedostoa.

1. Tyhmä konfigurointimenetelmä

Kopioi seuraava koodi yllä mainittuun tiedostoon, tallenna se ja valitse juuri muokkaamasi JSON-tiedosto uudelleen kääntääksesi 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. Perusmääritysmenetelmä

oletuksena,g++ Kääntäjät eivät yleensä käytä uusinta C++-standardia, vaan käyttävät sen sijaan vakaata oletusstandardia (yleensä vanhempaa standardia, kuten C++14 tai C++17) varmistaakseen yhteensopivuuden vanhemman koodin kanssa.Joten jos et nimenomaisesti määritä-std=c++20 tai-std=c++23, kääntäjä saattaa kääntää käyttämällä vanhempaa standardia, mikä voi aiheuttaa virheitä käytettäessä uuden standardin ominaisuuksia.

Siksi, jos haluamme käyttää viimeisintä käännösmenetelmää, meidän on viitattava yllä olevaan, kääntäjämme tukemaan enimmäisversioon C++, jotta voimme päivittää JSON-tiedostomme kääntämään C++:n uusimman version.

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

Tarkka muutos on vain yksi koodirivi

![[Liitetty kuva 20240711234819.png]]

3. Syvällinen analyysi

Peruskokoonpanokohteet

{  
   "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
Luo muunnelmia tekstistä
{
	[  
       {  
           "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
kaikki yhteensä
{  
   "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