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

时间:2014-01-21 14:21:42

标签: c function external

我的文件是

// 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;
}

8 个答案:

答案 0 :(得分:23)

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

I prefer save file with .h extension位于同一目录/文件夹中。

#include "ClasseAusiliaria.h"

答案 1 :(得分:7)

像这样更改Main.c

#include <stdlib.h>
#include <stdio.h>
#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

答案 2 :(得分:5)

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

然后你必须将两个* .c文件编译成一个项目。细节依赖于编译器。

答案 3 :(得分:3)

制作文件classAusiliaria.h并在其中提供您的方法签名。

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

答案 4 :(得分:3)

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

这里的问题是您必须使用“”而不是&lt;&gt;因为您要包含一个文件,该文件位于发生包含的文件所在的同一目录中。这对.c和.h文件都很常见

答案 5 :(得分:3)

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

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

    int add(int a, int b); 

在main函数之前,主函数会识别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;
    }

答案 6 :(得分:2)

您不应该在其他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 <stdlib.h>
#include <stdio.h>
#include <ClasseAusiliaria.h>

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

答案 7 :(得分:2)

 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);
 }