manejo - ¿Cómo invocar la función desde un archivo.c externo en C?
lectura y escritura de archivos en c++ (8)
Cambia tu Main.c
como asi
#include <stdlib.h>
#include <stdio.h>
#include "ClasseAusiliaria.h"
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d/n",risultato);
}
Crea ClasseAusiliaria.h
como tal
extern int addizione(int a, int b);
Luego compilé y ejecuté su código, obtuve una salida de
11
Mis archivos son
// main.c
#include "add.c"
int main(void) {
int result = add(5,6);
printf("%d/n", result);
}
y
// add.c
int add(int a, int b) {
return a + b;
}
Debe declarar int addizione(int a, int b);
(nota al punto y coma) en un archivo de encabezado e incluya el archivo en ambos archivos. Incluirlo en Main.c le dirá al compilador cómo se debe llamar a la función. Incluir en el segundo archivo le permitirá verificar que la declaración sea válida (el compilador se quejaría si la declaración y la implementación no coincidieran).
Luego, debe compilar ambos archivos * .c en un proyecto. Los detalles son dependientes del compilador.
Hay muchas grandes contribuciones aquí, pero permítanme agregar la mía a todas.
Lo primero que noté es que no hizo ninguna promesa en el archivo principal de que iba a crear una función conocida como add (). Este conteo se ha hecho así en el archivo principal:
int add(int a, int b);
antes de su función principal, de esa manera su función principal reconocería la función de adición e intentaría buscar su código ejecutable. Así que esencialmente tus archivos deberían ser
C Principal
int add(int a, int b);
int main(void) {
int result = add(5,6);
printf("%d/n", result);
}
y // add.c
int add(int a, int b) {
return a + b;
}
Puede incluir los archivos .c, no hay problema con ellos lógicamente, pero de acuerdo con el estándar para ocultar la implementación de la función, pero para proporcionar los binarios, se utilizan las técnicas de los encabezados y los archivos de origen, donde se utilizan los encabezados para definir las firmas de la función. Donde los archivos fuente tienen la implementación. Cuando vendes tu proyecto al exterior, solo envías los encabezados y binarios (libs y dlls) para que ocultes la lógica principal detrás de la implementación de tu función.
Aquí el problema es que tiene que usar "" en lugar de <>, ya que está incluyendo un archivo que se encuentra dentro del mismo directorio que el archivo donde ocurre la inclusión. Es común a los archivos .c y .h
haga un archivo classAusiliaria.h
y allí provea las firmas de su método.
Ahora, en lugar de incluir el archivo .c, incluya este archivo .h.
no debes incluir archivos c en otros archivos c En su lugar, cree un archivo de encabezado donde se declare la función que desea llamar. Como así: archivo ClasseAusiliaria.h:
int addizione(int a, int b); // this tells the compiler that there is a function defined and the linker will sort the right adress to call out.
En su archivo Main.c puede incluir el archivo de encabezado recién creado:
#include <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d/n",risultato);
}
use #include "ClasseAusiliaria.c"
[No use corchetes angulares (<>)]
y prefiero guardar el archivo con la extensión .h
en el mismo directorio / carpeta.
#include "ClasseAusiliaria.h"
write main.c like this -
caution : while linking both main.0 and ClasseAusiliaria.o should be
available to linker.
#include <stdlib.h>
#include <stdio.h>
extern int addizione(int a, int b)
int main(void)
{
int risultato;
risultato = addizione(5,6);
printf("%d/n",risultato);
}