我正在尝试正确理解如何从C中的另一个源文件调用C函数。我有一个简单的例子,我正在努力工作。我有两个函数,function1和function2,它们包含在file.c中。我试图从main.c调用函数2 bur接收错误"未定义引用函数2"。
的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可以组合成一个函数,但我想理解为什么这个例子不起作用! - 谢谢)
答案 0 :(得分:2)
将代码复制/粘贴到main.c file.c file.h中可以正常工作
与该问题无关的其他好建议:
设置 - &gt;编译器 - &gt;编译器标志选项卡。检查-Wall -Wextra和-pedantic-errors对应的选项。如果没有C11选项,请添加一个。 See this
正如有人指出的那样,你应该始终从file.c #include "file.h"
答案 1 :(得分:1)
您的源代码是正确的。您可能没有做的是将两个目标文件链接在一起以创建可执行文件。
从命令行,将两个文件编译为目标文件
cc -Wall -std=c11 -c main.c
创建main.o
cc -Wall -std=c11 -c file.c
创建file.o
然后链接他们
cc -o my-executable main.o file.o
然后你将有一个名为my-executable
的可运行二进制文件。如果你有一个IDE,将有一个等效的方法来执行上述操作,但它将取决于IDE。