如何在C中从外部.c文件调用函数?

我的档案是

// main.c #include "add.c" int main(void) { int result = add(5,6); printf("%d\n", result); } 

 // add.c int add(int a, int b) { return a + b; } 

使用#include "ClasseAusiliaria.c" [不要使用尖括号(<>)]

我更喜欢在同一目录/文件夹中使用.h扩展名保存文件 。

#include "ClasseAusiliaria.h"

像这样更改你的Main.c

 #include  #include  #include "ClasseAusiliaria.h" int main(void) { int risultato; risultato = addizione(5,6); printf("%d\n",risultato); } 

像这样创建ClasseAusiliaria.h

 extern int addizione(int a, int b); 

然后我编译并运行你的代码,我得到了一个输出

 11 

你必须声明int addizione(int a, int b); (在分号中注意)在头文件中,并将文件包含在两个文件中。 将它包含在Main.c中会告诉编译器应该如何调用该函数。 包含在第二个文件中将允许您检查声明是否有效(如果声明和实现不匹配,编译器会抱怨)。

然后,您必须将* .c文件编译到一个项目中。 细节依赖于编译器。

制作一个文件classAusiliaria.h并在那里提供你的方法签名。

现在不包括.c文件包含此.h文件。

您可以包含.c文件,逻辑上没有问题,但是根据标准来隐藏函数的实现但是提供二进制文件,使用头文件和源文件技术,其中头文件用于定义函数签名源文件的实现位置。 当您将项目出售到外部时,您只需发送标题和二进制文件(libs和dll),以便隐藏函数实现背后的主要逻辑。

这里的问题是你必须使用“”代替<>,因为你要包含一个文件,该文件位于发生包含的文件所在的同一目录中。 它通常用于.c和.h文件

这里有很多很棒的贡献,但是让我尽量少添加我的。

我注意到的第一件事是,你没有在主文件中做任何承诺,你将创建一个称为add()的函数。 这个计数在主文件中这样完成:

  int add(int a, int b); 

在主函数之前,主函数会识别add函数并尝试查找其可执行代码。 所以基本上你的文件应该是

MAIN.C

  int add(int a, int b); int main(void) { int result = add(5,6); printf("%d\n", result); } 

和// add.c

  int add(int a, int b) { return a + b; } 

你不应该在其他c文件中包含c文件。 而是创建一个头文件,其中声明要调用的函数。 像这样:文件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. 

在Main.c文件中,您可以包含新创建的头文件:

 #include  #include  #include  int main(void) { int risultato; risultato = addizione(5,6); printf("%d\n",risultato); } 
  write main.c like this - caution : while linking both main.0 and ClasseAusiliaria.o should be available to linker. #include  #include  extern int addizione(int a, int b) int main(void) { int risultato; risultato = addizione(5,6); printf("%d\n",risultato); }