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 に答える