Entorno de desarrollo

Si Powershell no te permite ejecutar los comandos, abrí una Terminal como Administrador e introducí:

Set-ExecutionPolicy RemoteSigned

Presiona Y luego Enter

Cerrá la Terminal y ejecuta los comandos, según elección en una Terminal normal

⚠️ Se cambia MinGW64 por MinGW32 para seguir la teoría de la cursada ⚠️

MinGW64 + Visual Studio Code

Obtener MinGW64 que contiene GCC, GDB y make, descargarlo, descomprimirlo en la unidad C en la carpeta mingw64.

Abrimos la terminal e ingresamos la siguiente línea:

$url="https://github.com/niXman/mingw-builds-binaries/releases/download/15.2.0-rt_v13-rev1/x86_64-15.2.0-release-posix-seh-ucrt-rt_v13-rev1.7z"; $tmp="$env:TEMP\mingw.7z"; $dir="$env:TEMP\mingw_extract"; Invoke-WebRequest $url -OutFile $tmp; New-Item -ItemType Directory -Force -Path $dir | Out-Null; tar -xf $tmp -C $dir; Move-Item "$dir\mingw64" "C:\mingw64"

Tras terminar y ver nuevamente que podemos introducir comandos, agragamos gcc y gdb a las variables de entorno y hacemos un Hard link para make:

setx PATH "$env:PATH;C:\mingw64\bin"
New-Item C:\mingw64\bin\make.exe -ItemType HardLink -Value C:\mingw64\bin\mingw32-make.exe

Cerrar la terminal y abrir una nueva para comprobar que se agregó:

gcc --version
make --version

MinGW32 + Visual Studio Code

Obtener MinGW32 que contiene GCC, GDB y make, descargarlo, descomprimirlo en la unidad C en la carpeta mingw32.

Abrimos la terminal e ingresamos la siguiente línea:

$url="https://github.com/niXman/mingw-builds-binaries/releases/download/15.2.0-rt_v13-rev1/i686-15.2.0-release-posix-dwarf-ucrt-rt_v13-rev1.7z"; $tmp="$env:TEMP\mingw.7z"; $dir="$env:TEMP\mingw_extract"; Invoke-WebRequest $url -OutFile $tmp; New-Item -ItemType Directory -Force -Path $dir | Out-Null; tar -xf $tmp -C $dir; Move-Item "$dir\mingw32" "C:\mingw32"

Tras terminar y ver nuevamente que podemos introducir comandos, agragamos gcc y gdb a las variables de entorno y hacemos un Hard link para make:

setx PATH "$env:PATH;C:\mingw32\bin"
New-Item C:\mingw32\bin\make.exe -ItemType HardLink -Value C:\mingw32\bin\mingw32-make.exe

Cerrar la terminal y abrir una nueva para comprobar que se agregó:

gcc --version
make --version

Instalar Microsoft Visual Studio Code y las extensiones necesarias para C

Abrimos otra terminal de PowerShell e ingresamos la siguiente línea:

winget install Microsoft.VisualStudioCode ; $code="$env:LOCALAPPDATA\Programs\Microsoft VS Code\bin\code.cmd" ; foreach($e in @("ms-vscode.cpptools","ms-vscode.cpptools-extension-pack","ms-vscode.makefile-tools")){ & $code --install-extension $e }

Abrimos VS Code, marcamos Mark Done en los settings de IA que pide y cerramos el chat lateral

Abrimos Get started with C++ development, indicamos NO a acceder al pre-release

Pulsamos el boton Set my Default Compiler, elegimos use gcc.exe found at C:/mingw64/bin presionamos Mark Done.

⚠️ Va a diferir en que verá at C:/mingw32/bin con el toolchain de 32 bits ⚠️

Creamos un directorio en nuestra PC y abrimos ese directorio con Open folder. Ej:. C:\Programa

Una vez abierto pulsamos Yes, trust the authors, creamos un nuevo directorio desde el menu lateral EXPLORER

Trust the authors

Luego creamos un código C mediante el primer icono New File, indicamos nombre y extensión. ej:. main.c. Opcionalmente, creamos un archivo Makefile.


Code::Blocks + MinGW

winget install CodeBlocks.CodeBlocks.MinGW

Alternativa, Code Blocks con MinGW integrado, tras instalarse, cerrar la Terminar y abrir una nueva, iniciarlo con codeblocks, darle a OK y seleccionamos Yes, associate Code::Blocks with C/C++ file types, OK.

Creamos un nuevo proyecto desde File → New Proyect → Files → C/C++ Source → Go

En el asistente que sigue darle a Next → C → Next → .... Elegir donde estará nuestro programa e indicar un nombre sin extensión, es asignada, presionar Finish

Se compila presionando el ícono de la tuerca y se ejecuta con el ícono de play o desde el menú Build


Sin IDE, Editor de texto + MinGW

Usamos cualquier editor de texto, notepad o notepad++ que trae resaltado de código

Notepad++:

winget install Notepad++.Notepad++

MinGW:

32 bits (Usado en la cursada)

$url="https://github.com/niXman/mingw-builds-binaries/releases/download/15.2.0-rt_v13-rev1/i686-15.2.0-release-posix-dwarf-ucrt-rt_v13-rev1.7z"; $tmp="$env:TEMP\mingw.7z"; $dir="$env:TEMP\mingw_extract"; Invoke-WebRequest $url -OutFile $tmp; New-Item -ItemType Directory -Force -Path $dir | Out-Null; tar -xf $tmp -C $dir; Move-Item "$dir\mingw32" "C:\mingw32"

Tras terminar y ver nuevamente que podemos introducir comandos, agragamos gcc y gdb a las variables de entorno y hacemos un Hard link para make:

setx PATH "$env:PATH;C:\mingw32\bin"
New-Item C:\mingw32\bin\make.exe -ItemType HardLink -Value C:\mingw32\bin\mingw32-make.exe

Cerrar la terminal y abrir una nueva para comprobar que se agregó:

gcc --version
make --version

64 bits

$url="https://github.com/niXman/mingw-builds-binaries/releases/download/15.2.0-rt_v13-rev1/x86_64-15.2.0-release-posix-seh-ucrt-rt_v13-rev1.7z"; $tmp="$env:TEMP\mingw.7z"; $dir="$env:TEMP\mingw_extract"; Invoke-WebRequest $url -OutFile $tmp; New-Item -ItemType Directory -Force -Path $dir | Out-Null; tar -xf $tmp -C $dir; Move-Item "$dir\mingw64" "C:\mingw64"

Tras terminar y ver nuevamente que podemos introducir comandos, agragamos gcc y gdb a las variables de entorno y hacemos un Hard link para make:

setx PATH "$env:PATH;C:\mingw64\bin"
New-Item C:\mingw64\bin\make.exe -ItemType HardLink -Value C:\mingw64\bin\mingw32-make.exe

Cerrar la terminal y abrir una nueva para comprobar que se agregó:

gcc --version
make --version

¿Cómo compilar?

Simplemente abrimos la Terminal en la ubicación de nuestro código fuente e ingresamos:

gcc -std=c11 -Wall -Wextra -pedantic main.c -o main

Y lo ejecutamos:

./main.exe

Si usamos Makefile:

Al guardar elegir All types (*.*), para que quede sin extensión el archivo Makefile

make

Y lo ejecutamos:

./main.exe

Para recompilar de cero ejecutamos make clean para limpiar la compilación previa, make para compilar:


make clean
make
./main.exe
Makefile