Estoy tratando de aprender C y en varios tutoriales hacen la separación de funciones de esta manera:
ARCHIVO PRINCIPAL
#include <stdio.h>
#include "cabecera.h"
int main(void){
printf("%f\n", suma(1, 2));
printf("%f\n", resta(1, 2));
printf("%f\n", multiplica(1, 2));
printf("%f\n", divide(1, 2));
return 0;
}
ARCHIVO CON FUNCIONES
#include "cabecera.h"
float suma(float a, float b){
return a + b;
}
float resta(float a, float b){
return a - b;
}
float multiplica(float a, float b){
return a * b;
}
float divide(float a, float b){
return a / b;
}
ARCHIVO CABECERA
float suma(float a, float b);
float resta(float a, float b);
float multiplica(float a, float b);
float divide(float a, float b);
si hago un archivo funciones.c
con los prototipos y las funciones y lo incluyo en principal con #include "funciones.c"
sí funciona.
¿Qué está mal con la cabecera?
EDITADO: Parece ser que el problema esta en la extension Code Runner. He probado a compilar desde la línea de comandos con:
gcc principal.c funciones.c
y me genera el exe sin problemas.
Lo cómodo de code runner es que muestra el resultado por consola sin necesidad de abrir el .exe
.
¿Alguna sugerencia?
EDICIÓN II:
en base a lo sugerido he editado el task.json
de la siguiente forma:
cambiando la línea
"${file}"
por
"${fileDirname}/*.c"
y sigue sin funcionar al ejecutar desde code runner
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\MinGW\\bin\\gcc.exe",
"args": [
"-g",
"${fileDirname}/*.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "compiler: C:\\MinGW\\bin\\gcc.exe"
}
]
}