Entorno de desarrollo en C++¶
Compiladores C++ en Windows¶
Empezamos la aventura instalando en Windows diferentes compiladores para código C++.
En primer lugar MinGW (Minimalist GNU for Windows) y Clang LLVM los podemos encontrar en https://winlibs.com/, concretamente en el ZIP para 64 bits GCC 11.2.0 + LLVM/Clang/LLD/LLDB 13.0.0 + MinGW-w64 9.0.0 (MSVCRT).
Después de descomprimirlo en el disco C:\mingw64 y añadir el directorio C:\mingw64\bin al PATH de sistema puedo comprobar que dispongo tanto del compilador g++ como clang++ en una terminal:
Así mismo he instalado el compilador MSVC de Visual Studio Community 2019, que podemos comprobar mediante cl.exe en la Developer PowerShell:
Las diferentes funcionalidades soportadas por cada compilador pueden encontrarse en las tablas comparativas en la web https://en.cppreference.com/w/cpp/compiler_support.
Sin más, lo próximo será configurar algún editor para empezar a programar código.
Ejecutar código C++ con VSC¶
Una vez configurados los compiladores deseados, la forma más sencillo de compilar y ejecutar un fichero en VSC es instalar la extensión Code Runner.
Una vez instalada, para compilar y ejecutar el típico Hola Mundo
, podemos crear un main.cpp en un directorio, presionar F1 y buscar la opción Run Code
:
#include <iostream>
int main()
{
std::cout << "Hola Mundo!";
return 0;
}
El resultado será la salida por pantalla:
Debemos tener en cuenta que esta extensión probará un compilador automáticamente.
Si queremos extender la configuración de compilación deberemos crear un directorio .vscode
en el proyecto y un fichero settings.json
establecer la configuración deseada.
Por ejemplo para utilizar GCC++20
:
{
"code-runner.executorMap": {
"cpp": "cd $dir && g++ -std=c++20 *.cpp -o $fileNameWithoutExt && ./$fileNameWithoutExt.exe"
}
}
Para utilizar Clang++20
:
{
"code-runner.executorMap": {
"cpp": "cd $dir && clang++ -std=c++20 *.cpp -o $fileNameWithoutExt && ./$fileNameWithoutExt.exe"
}
}
Para utilizar Cl++latest
:
{
"code-runner.executorMap": {
"cpp": "cd $dir && cl.exe /Zi /std:c++latest /EHsc /Fe: $fileNameWithoutExt.exe $fileName && $dir$fileNameWithoutExt.exe",
}
}
Nota: Para hacer funcionar la configuración de CL
se debe abrir Visual Studio Code
desde la Developer Powershell
estando situado en el directorio del proyecto:
cd /directorio/proyecto
code .
Por mi parte estaré utilizando generalmente la configuración de GCC+20, por lo que configuraré por defecto el editor de esa forma desde Archivo > Preferencias > Configuración
. Buscando la opción code-runner.executorMap
:
Y ahí estableciendo una configuración por defecto para ahorrarme el settings.json
en cada proyecto:
Consejo: Podemos añadir un cls &&
justo después de cd $dir
para limpiar la terminal (o clear
en Linux/Mac):
En cuanto al intelliSense (remarcador de sintaxis), para que sea compatible con la versión 20 se hace desde Ver > Paleta de comandos > C/C++: Editar configuraciones (UI)
:
En la nueva ventana cambiaremos esta opción:
Sin más, con esto deberíamos tenerlo todo listo.
Primer programa en C++¶
Como es costumbre se puede empezar a aprender creando un programa Hola Mundo
:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
En la primera línea encontramos la importación de un componente de la biblioteca estándar (STL) de C++ para manejar operaciones de entrada/salida.
Si no lo importamos el editor se quejará haciendo referencia a que los miembros cout
y endl
no se encuentran definidos:
El nombre iostream
es un acrónimo de Input/Output Stream
y es que el flujo de entrada y salida de datos en C++ (y su predecesor C) no se encuentra definida dentro de la sintaxis básica y se provee por medio de librerías de funciones especializadas como ésta, que define los siguientes objetos:
cin
: Flujo de entradacout
: Flujo de salidacerr
: Flujo de error no almacenado.clog
: Flujo de error almacenado.endl
: Fin de línea.
En cualquier caso, lo que encontramos en nuestro programa es un primer bloque de código:
int main()
{
}
Este bloque es una función cuyo nombre es main y este nombre es muy especial pues le indica al programa que esta es la función principal y se debe empezar a ejecutar desde aquí. Además como es lógico solo puede existir una única función main en el programa.
En cuanto al texto impreso en la terminal, corresponde a la porción:
std::cout << "Hello World!" << std::endl;
Aquí tenemos la instrucción std::cout
para iniciar un flujo de salida y el operador de inserción <<
que permite insertar en el flujo caracteres entre comillas dobles, acabando con la inserción de un fin de línea std::endl
y el respectivo punto y coma ;
que finaliza la instrucción.
Esta instrucción podemos escribirla varias veces para imprimir tantas líneas como deseemos:
std::cout << "Primera linea" << std::endl;
std::cout << "Segunda linea" << std::endl;
std::cout << "Tercera linea" << std::endl;
Finalmente, la función principal main espera algún tipo de retorno para saber que el programa ha finalizado, generalmente se indica un return 0 para devolver un número 0:
return 0;
Como punto interesante comentar que, por defecto este código fuente se ejecuta en la terminal de Windows sin codificación, incapaz de entender los símbolos especiales latinos:
Podemos importar la librería Windows.h
y justo antes de mostrar por pantalla el texto establecer la codificación UTF-8 para que la terminal decodifique correctamente los símbolos:
Con esto hemos revisado las instrucciones básicas de un programa con C++.
Última edición: 07 de Mayo de 2022