我将尝试适当地理解如何在C语言中从另一个源文件调用C函数。 我有一个简单的示例,我正在尝试使其工作。 我有两个函数function1和function2,它们包含在file.c文件中。 我试图从main.c中调用function2,但收到“对function2的未定义引用”错误。
main.c
#include <stdio.h>
#include <stdlib.h>
#include "file.h"
int main()
{
int result = function2(3);
printf("Result = %d ", result);
return 0;
}
file.c
int function1(int a) /* Function 1 definition */
{
int val = a*a;
return val;
}
int function2(int val) /* Function 2 definition */
{
return val +5;
}
file.h
#ifndef FILE_H_INCLUDED
#define FILE_H_INCLUDED
extern int function1(int a) ;
extern int function2(int val);
#endif // FILE_H_INCLUDED
我知道function1和function2可以合并成一个函数,但我想了解为什么这个例子不起作用!-谢谢
file.c
的开头也包含file.h
。这将使您能够发现如果file.h
中的声明与file.c
不同,就可以发现错误。 - Jabberwockymain.c
。正如@SouravGhosh所说,您需要检查编译/链接选项。 - lurkerextern
关键字;a.c
应该在任何其他内容之前包含a.h
) - 这并非总是必要的,但这是一个好的习惯;file.c
添加到你的 Codeblocks 项目中 - 而不仅仅是把它留在同一个目录下。