Skip to content

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]:

bash
git clone https://github.com/sisoputnfrba/so-commons-library
cd so-commons-library
make debug
make install

TIP

En los archivos *.h del repo vas a encontrar todas las funciones que pueden usar junto con una breve descripción.

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:

bash
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:

github-create-repo-from-template

Y luego clonar el repositorio recién creado ejecutando git clone.

Si ejecutamos tree -a, vamos a ver que se nos descargaron varios archivos:

txt
.
├── .gitignore
├── makefile
├── README.md
├── settings.mk
├── src
│   └── main.c
└── .vscode
    ├── c_cpp_properties.json
    ├── launch.json
    ├── settings.json
    └── tasks.json

2 directories, 9 files

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:

bash
code .

Veremos que se nos abre el editor con el proyecto que acabamos de descargar:

vscode-open-project

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[2], o utilizando el shortcut Ctrl+Shift+B. Vamos a ver que se nos genera una carpeta bin con el binario del proyecto compilado:

vscode-run-build-task

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:

bash
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:

vscode-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:

makefile
# 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:

vscode-copy-compiler-output

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:

vscode-run-debug

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[3], ocurren dos cosas:

  1. Se compila el proyecto ejecutando la build task que vimos en el paso anterior.
  2. 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[4] en que lo hace el editor:

bash
./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.




  1. ¿Por qué en modo debug? Es una herramienta que nos ayudará más adelante (?) ↩︎

  2. En esta sección explicamos más en detalle cómo está configurada la tarea de compilación en Visual Studio Code. ↩︎

  3. En esta otra sección explicamos cómo configuramos el debugger en Visual Studio Code. ↩︎

  4. 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. ↩︎

© 2024 Cátedra de Sistemas Operativos