Crear tu primer proyecto C
Una vez instaladas las VMs (o el entorno Linux que hayas elegido), debemos continuar con un par de configuraciones antes de arrancar a desarrollar.
Descargar la so-commons-library
Para facilitar el desarrollo del TP, desde la cátedra proveemos una biblioteca con TADs de uso común: la commons library. Esta biblioteca nos va a proveer colecciones vistas en AyED, como listas y queues, y funciones para simplificar el manejo de strings y fechas, entre otras.
Para descargarla, vamos a abrir una consola y nos vamos a clonar el repo para instalarlas en modo debug[1]:
git clone https://github.com/sisoputnfrba/so-commons-library
cd so-commons-library
make debug
make install
TIP
En el sitio de documentación vas a encontrar todas las funciones que pueden usar junto con ejemplos de uso.
Descargar el template oficial
Ahora sí, una vez instaladas las commons, vamos a probar de incluirlas en nuestro primer proyecto en Visual Studio Code.
Para eso, abrimos una nueva consola y creamos un nuevo directorio para nuestro proyecto. Luego, nos vamos a mover a ese directorio y, una vez allí, vamos a descargar el template oficial:
mkdir ejemplo
cd ejemplo
wget -qO- https://faq.utnso.com.ar/project.tar.gz | tar -xzvf - --strip-components 1
TIP
También podés crear un nuevo proyecto desde GitHub incluyendo el template c-base-project a la hora de crear un nuevo repositorio:
Y luego clonar el repositorio recién creado ejecutando git clone
.
Si ejecutamos tree -a
, vamos a ver que se nos descargaron varios archivos:
Nombre | Descripción |
---|---|
.vscode/ | Directorio en donde se encuentran las configuraciones de Visual Studio Code. |
src/ | Directorio en donde vamos a dejar todos los archivos fuente (.c y .h) del proyecto. |
.gitignore | Archivo que le indica a Git qué archivos y carpetas ignorar al momento de hacer un commit. |
makefile | Archivo make utilizado para compilar el proyecto.[2] |
settings.mk | Archivo con configuraciones extra del proyecto (que iremos conociendo en otras guías de esta página). |
TIP
Es importante que todos los archivos fuente del proyecto se encuentren en la carpeta src
, ya que el Makefile está configurado para buscarlos ahí.
Si querés saber más sobre cómo utilizar varios archivos fuente en un proyecto, podés pasarte por nuestra guía de buenas prácticas de C.
Abrir el proyecto en Visual Studio Code
Ahora, vamos a abrir el directorio que creamos en Visual Studio Code. Podemos hacerlo desde el editor moviéndonos a File
> Open Folder
o utilizando el comando:
code .
Veremos que se nos abre el editor con el proyecto que acabamos de descargar:
Cómo compilar
El template ya cuenta con una tarea de compilación que podemos ejecutar desde el editor moviéndonos a la pestaña Terminal y haciendo click en Run Build Task[3], o utilizando el shortcut Ctrl+Shift+B
. Vamos a ver que se nos genera una carpeta bin
con el binario del proyecto compilado:
TIP
En la pestaña Terminal vamos a ver que se ejecuta el comando make all
para compilar el proyecto. Si quisiéramos compilarlo manualmente, podríamos hacerlo abriendo una consola y ejecutando el mismo comando:
make all
Probá de modificar el archivo src/main.c
y volvé a compilar el proyecto ejecutando este comando desde una consola. Vas a ver cómo efectivamente el output del compilador es el mismo.
Errores de compilación
En caso de que la compilación falle, vamos a poder ver los errores y navegar entre ellos desde la pestaña de Problems:
IMPORTANTE
Recuerden ir recompilando el proyecto activamente, ya que es la única forma de recibir feedback inmediato del compilador y corregir los errores de sintaxis que puedan aparecer.
Una vez corregidos los errores, debemos volver a compilar el proyecto para que el editor actualice la lista de errores y warnings.
Existen distintos tipos de errores:
❌ Los que aparecen en rojo. Éstos impiden que el proyecto se compile, por ejemplo, errores de sintaxis o referencias a variables que no existen.
⚠️ Los que aparecen en amarillo. Éstos no impiden que el proyecto se compile, pero es altamente recomendable corregirlos, ya que muy probablemente signifiquen que algo no está funcionando como esperamos, por ejemplo, tener una variable no se esté utilizando.
TIP
Si querés que el chequeo de tu código sea más estricto y evitar olvidarte de corregir los warnings, existe un flag de gcc
que permite transformarlos en errores: -Werror
Podemos agregarlo fácilmente al final de las variables CDEBUG
y CRELEASE
del archivo settings.mk
:
# Compiler flags
CDEBUG=-g -Wall -DDEBUG -fdiagnostics-color=always
CDEBUG=-g -Wall -DDEBUG -fdiagnostics-color=always -Werror
CRELEASE=-O3 -Wall -DNDEBUG -fcommon
CRELEASE=-O3 -Wall -DNDEBUG -fcommon -Werror
Cómo reportar errores
Si necesitan compartirnos un error de compilación desde Visual Studio Code, nos servirá de gran ayuda contar con la salida del compilador. Para obtenerla, podemos navegar a la pestaña de Terminal y copiar el texto que aparece al ejecutar la tarea de compilación:
Un texto de error es mucho más útil que una captura de pantalla, ya que nos permite copiarlo e investigarlo sin tener que transcribirlo manualmente. Además, si alguien más tiene el mismo problema, va a poder encontrar la solución utilizando el buscador del foro.
Cómo ejecutar
Finalmente, para ejecutar el proyecto, nos moveremos a la pestaña de Run and Debug y haremos a hacer click en el botón de Run:
Si aparece un mensaje diciendo Hola, Operativos!!, ¡felicidades! Ya tenés tu primer proyecto en C funcionando.
TIP
Al hacer click en el botón de Run[4], ocurren dos cosas:
- Se compila el proyecto ejecutando la build task que vimos en el paso anterior.
- Se ejecuta el binario generado en la carpeta
bin
con el nombre del proyecto.
Los invitamos a abrir una consola en la carpeta ejemplo y ejecutar el binario manualmente para corroborar que se ejecuta de la misma forma[5] en que lo hace el editor:
./bin/ejemplo
Próximos pasos
- En la siguiente sección vamos a ver cómo utilizar Git para el TP de Operativos.
- Por otro lado, para ir entrando más de lleno en el Lenguaje C, podés empezar con las guías de punteros y memoria dinámica y de buenas prácticas de C.
- Por último, para aprender a aprovechar al máximo el debugger de Visual Studio Code, te recomendamos que leas nuestra guía de debugging.
¿Por qué en modo debug? Es una herramienta que nos ayudará más adelante (?) ↩︎
La explicación sobre qué es un Makefile y cómo construir uno se encuentra fuera del alcance de la materia. Si te interesa, podés arrancar viendo este video o leyendo este otro tutorial. ↩︎
En esta sección explicamos más en detalle cómo está configurada la tarea de compilación en Visual Studio Code. ↩︎
En esta otra sección explicamos cómo configuramos el debugger en Visual Studio Code. ↩︎
En realidad, no es exactamente de la misma forma, ya que el editor utiliza el debugger de
gdb
para ejecutar el binario, pero para los fines prácticos de este tutorial, podemos considerar que es lo mismo. ↩︎