Compartir tecnología

Configure el compilador de C (.sublime-build) en sublime para implementar el uso de C 20 en sublime, tutorial para principiantes

2024-07-12

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

1. Preparación preliminar

Primero debemos preparar el entorno C++. Por supuesto, si cree que su entorno C++ actual está configurado y la versión C++ puede satisfacer sus necesidades diarias, puede utilizar los dos comandos siguientes para consultar la versión C++.

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

Simplemente juzgue si sus necesidades pueden resolverse con la versión devuelta. Si cree que la versión actual puede admitir su uso posterior, salte directamente a la segunda etapa de configuración del archivo JSON.

  • CCG 4.8: Soporte C++ 11 (parcial)
  • CCG 4.9: Soporta C++11 y C++14 (parcial)
  • CCG 5: Soporte completo para C++14
  • CCG 6: Soporta C++14 y C++17 (parcial)
  • CCG 7: Soporta C++17 (principalmente)
  • CCG 8: Totalmente compatible con C++17, parcialmente compatible con C++20
  • CCG 9: Admite más funciones de C++20
  • CCG 10: Admite la mayoría de las funciones de C++20
  • CCG 11: Soporte más completo para C++20
  • CCG 12: Admite casi todas las funciones de C++20
  • CCG 13 y posteriores: Agregue soporte completo para C++20 e inicie soporte para C++23

Si descubre que no ha configurado su C++, o cree que la versión actual no puede soportar el aprendizaje diario, entonces necesita descargar unMingw configura el entorno C++

Actualmente estoy usando mi último Mingw actual como demostración.

![[Imagen pegada 20240711232026.png]]

Después de la descarga, descomprímalo en una carpeta que conozca, abra la ruta del archivo descomprimido y busque un archivo bin.

[[Imagen pegada 20240711232411.png]]

Después de abrirlo, copie la ruta del archivo anterior. Es mejor utilizar la ruta completa en inglés al descomprimir.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Editar variables de entorno del sistema

Imagen pegada 20240711232650

  1. Variables de entorno…
    ![[Imagen pegada 20240711232725.png]]

  2. Edite el contenido en Ruta a continuación, Editar->Nuevo, coloque la ruta, seleccione esta ruta y muévala a la parte superior.
    ![[Imagen pegada 20240711232813.png]]

  3. Continúe haciendo clic en Aceptar para completar.

Estoy probando la versión g++.

2. Configuración del entorno

Herramientas -> Sistema de compilación-----> Nuevo sistema de compilación... generará un archivo *.sublime-build en el que se configura el archivo C++ JSON. Por supuesto, también puede modificar el archivo de compilación existente.

1. Método de configuración tonto

Copie el siguiente código en el archivo mencionado anteriormente, guárdelo y seleccione nuevamente el archivo JSON que acaba de editar para compilar 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. Método de configuración básica

por defecto,g++ Los compiladores normalmente no utilizan el último estándar de C++, sino que utilizan un estándar predeterminado estable (normalmente un estándar más antiguo como C++14 o C++17) para garantizar la compatibilidad con el código anterior.Entonces, si no especifica explícitamente-std=c++20 o-std=c++23, el compilador puede compilar utilizando un estándar anterior, lo que puede provocar errores al utilizar funciones del nuevo estándar.

Por lo tanto, si queremos utilizar el último método de compilación, debemos consultar lo anterior, la versión máxima de C++ admitida por nuestro compilador, para actualizar nuestro archivo JSON para compilar con la última versión de 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

El cambio específico es solo una línea de código.

![[Imagen pegada 20240711234819.png]]

3. Análisis en profundidad

Elementos de configuración básica

{  
   "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
Construir variaciones de texto
{
	[  
       {  
           "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
total
{  
   "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