我正在用ANSI C编写一个简单的应用程序.我在Unix环境中使用GCC.
我有以下示例应用程序:
//main.c
#include "foo.h"
int main()
{
int result;
result = add(1,5);
return0;
}
Run Code Online (Sandbox Code Playgroud)
标题:
//foo.h
#ifndef FOO_H_INCLUDED
#define FF_H_INCLUDED
int add(int a, int b);
#endif
Run Code Online (Sandbox Code Playgroud)
执行:
//foo.c
int add(int a, int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令编译我的程序:
cc main.c -o main.o
Run Code Online (Sandbox Code Playgroud)
编译器抱怨"引用add是未定义的".这是一个链接问题吗?如何正确使用我的标题?
谢谢!
您需要将两个源文件一起编译:
cc main.c foo.c -o main
Run Code Online (Sandbox Code Playgroud)
此外,在这种情况下,-o生成一个可执行文件,因此调用它main.o可能会产生误导.
还有一个花絮,虽然无关的问题:#ifndef与#define在foo.h不匹配.