为什么CC没有在标题中看到我的函数定义?

Nic*_*ick 1 c gcc

我正在用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是未定义的".这是一个链接问题吗?如何正确使用我的标题?

谢谢!

cas*_*nca 6

您需要将两个源文件一起编译:

cc main.c foo.c -o main
Run Code Online (Sandbox Code Playgroud)

此外,在这种情况下,-o生成一个可执行文件,因此调用它main.o可能会产生误导.


还有一个花絮,虽然无关的问题:#ifndef#definefoo.h不匹配.