如何在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); }