0

错误 undefined reference to 'display_menu一直存在,我不知道为什么。

main.c的是:

#include <stdio.h>
#include "care.h"

int main()
{
    display_menu();

    return 0;
}

care.c的是:

#include <stdio.h>
#include "care.h"

void display_menu()
{

//some code defining display_menu

}

最后,我care.h的是:

#ifndef __CARE_H__
#define __CARE_H__


void display_menu();

#endif

这似乎很正确,但它不会编译。帮助?

4

1 回答 1

2

当你有多个源文件时,你需要编译和链接所有的源文件。如果您使用的是 IDE(例如 VisualStudio、Eclipse 等),那么这应该由 IDE 处理。

如果您从命令行编译,则必须自己执行此操作。

以 GCC 为例:

$ gcc -Wall main.c care.c -o my_example_program

上述命令将命令行上的所有源文件编译并链接到程序可执行文件my_example_program中。该选项-Wall启用更多警告,这很好,因为许多警告可以提示您可能存在的错误,这些错误在技术上可能是合法的,但仍然会做坏事。该选项-o告诉 GCC 将结果命名为什么,在本例中为可执行程序。


您还可以将其拆分为多个步骤,将每个源文件编译成一个目标文件,然后将所有目标文件链接到最终的可执行文件:

$ gcc -Wall main.c -c -o main.o
$ gcc -Wall care.c -c -o care.o
$ gcc main.o care.o -o my_example_program

该选项-c是告诉 GCC 生成目标文件而不是可执行文件的选项。和以前一样-o,结果文件的名称是什么,无论是目标文件还是可执行程序。

当你有很多文件时,最后一种方法可能会变得很麻烦,但是有一些工具make可以帮助你解决这个问题。

于 2013-08-28T06:56:54.950 回答