Icono del sitio AranaCorp

Programación en C++ con VS Code

Instalación y configuración de VS Code

Si aún no lo ha hecho, descargue e instale Visual Studio Code

Instalación de la extensión C\

Instalación de la extensión Code Runner. Esta extensión es opcional pero le permitirá ejecutar código en un terminal externo para utilizar la entrada del usuario (cin). En la configuración, active la opción Code-runner: Run In Terminal.

Instalar un compilador

Para compilar, ejecutar y analizar tu código necesitarás herramientas como GNU.

Descargue y descomprima una versión de GNU Compiler Collection (GCC) si no la tiene ya en su ordenador.

g++ --version

También puede instalar una versión de GCC desde MSYS2

$ pacman -S mingw-w64-ucrt-x86_64-gcc

Cree su proyecto C

Una vez instaladas las distintas extensiones, puede crear su proyecto C++. Para ello, basta con crear una carpeta, abrir VS Code en ella y crear un archivo .cpp. Puede hacerlo a través de la interfaz de VS Code o desde la línea de comandos

mkdir myproject
cd myproject
code .

Copie el código Hola mundo en el archivo fuente.

#include <iostream>

int main()
{
    std::cout << "Hello World" << std::endl;
    return 0;
}

Compilar y probar su programa

Pour lancer le code vous pouvez utiliser le menu Run > Start Debugging (F5) qui lancera le programme dans la console de debug ou faire un clique-droit sur l’éditeur et lancer Run Code (Ctrl+Alt+N) qui le lancera dans le terminal (si Code runner est activé)

También puede hacerlo en la línea de comandos desde el terminal

g++ helloworld.cpp # -> a.exe executabl. compile and link
./a.exe # execute file
g++ -S helloworld.cpp # -> helloworld.s assembly source file. compile
g++ -c helloworld.cpp # -> helloworld.o object file. compile and assemble

Añadir una biblioteca C++ externa a VS Code

Puede añadir bibliotecas externas o crear las suyas propias. Para que VS Code compile las bibliotecas con el programa, debe especificar la ruta de acceso en el archivo tasks.json (por ejemplo, «–include=include/utils.cpp»)

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "--include=include/utils.cpp",
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

para compilar el programador, es necesario compilar y enlazar los dos archivos

g++ helloworld.cpp include/utils.cpp -o helloworld
# or
g++ -c helloworld.cpp include/utils.cpp # get object files
g++ -o helloworld.exe helloworld.o include/utils.o
./helloworld.exe #run program

Medición del tiempo de ejecución del programa

Un método bastante sencillo para medir el tiempo de ejecución de un programa es utilizar la biblioteca time.h y medir el tiempo transcurrido entre el inicio del programa y el final.

Para probar el tiempo de ejecución, creamos una función que cuenta de 0 a n con un cierto retraso entre cada iteración.

void count_to(int n = 10, int delay = 0);
#include <iostream>
#include <windows.h>
//#include <unistd.h>

void count_to(int n, int delay)
{
    for (int i=0;i<=n;i++){
        std::cout << i << std::endl;
        Sleep(delay);
    }
}

A continuación, en el código principal, medimos el tiempo antes y después de la ejecución de la función count_to()

#include <iostream>
#include <time.h>
#include "include/utils.h"

clock_t start, end;
double cpu_time_used;

int main()
{
    std::cout << "Hello World" << std::endl;

    start = clock();
    
    count_to(10,100);

    end = clock();
    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
    printf("Execution time: %f seconds\n", cpu_time_used);

    return 0;
}

La consola da el siguiente resultado

Hello World
0
1
2
3
4
5
6
7
8
9
10
Execution time: 1.180000 seconds

Uso de la herramienta de depuración VS Code

La función Ejecutar y depurar le permite ejecutar el código paso a paso colocando puntos de interrupción en diferentes puntos del código (identificados a la izquierda del número de línea por un punto rojo). También le permite observar las variables y los registros a medida que se ejecutan. Esto te permite seguir el progreso del código paso a paso en busca de cualquier error.

El código se ejecutará normalmente hasta el primer punto de interrupción, después del cual puede continuar la progresión hasta el siguiente punto de interrupción, o ejecutar el código paso a paso desde ese punto utilizando los botones de navegación

Puede observar los valores de las variables o registros en cada paso en la pestaña VARIABLES. O bien observar determinadas variables en RELOJ.

También puede ver el código ensamblador compilado abriendo la vista de «desensamblado», haciendo clic con el botón derecho del ratón en el editor y seleccionando «Abrir vista de desensamblado».

Solución de problemas

intente instalar MinGW-w64 desde MSYS2 y añada C:\msys64\ucrt64\bin a las variables de entorno. Compruebe que el compilador utilizado es g++.

Como solución intermedia, puede sustituir el coste por printf

comprueba que la librería libstdc++-6.dll está en el mismo lugar que el compilador usando la consola de depuración de código vs

Loaded 'C:\Program Files\Tesseract-OCR\libstdc++-6.dll'. Symbols loaded.
#instead of
Loaded 'C:\msys64\ucrt64\bin\libstdc++-6.dll'. Symbols loaded.

Asegúrese de que los comandos son los mismos para ambas funciones (en mi caso, el flage «-g» era un problema).

en el archivo tasks.json (depuración)

//
            "command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],

en el archivo de configuración (código del corredor)

   "code-runner.executorMap": {

        "cpp": "cd $dir && g++ -g $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

    },

Fuentes

Salir de la versión móvil