1

こんにちは、2 つの main() を使用しようとしていて、main() の複数の定義でこのエラーが発生しています。メイン関数の名前を変更した後、なぜこのエラーが発生し、print() に対してここで最初に定義されたのか。ヘッダファイル:

#ifndef TOP_H_
#define TOP_H_

#include <stdio.h>
#include <string.h>
#define onemain main
#define twomain main
inline void print();


#endif /* TOP_H_ */

cファイル1:

#include "top.h"
void print();
int onemain()
{
    print();
    return 0;
}
void print()
{
printf("hello one");
}

cファイル2:

#include "top.h"
void print();
int twomain()
{
    print();
    return 0;
}
void print()
{
printf("hello two");
}

エラーのスナップショット

4

5 に答える 5

10

基本的に、どの C (または C++) プログラムも、互いに呼び出し合う一連の関数です。
プログラムの実行を開始するには、これらの関数のいずれかを選択して最初に呼び出す必要があります。
慣例により、この初期関数は と呼ばれmainます。

プロジェクトに複数のソース ファイルを含めると、IDE はそれらすべてをコンパイルし、呼び出された 1 つの関数を探すリンカーを呼び出し、それmainを呼び出す実行可能ファイルを生成します。

何らかの理由で、これらすべてのファイル内に 2 つの「メイン」関数を定義した場合、リンカーは、プログラムの開始点として意図したものを独自に選択できないことを警告します。

于 2014-02-02T08:56:54.387 に答える
2

あなたの質問がわかりません - あなたのエラーメッセージは非常に明確です:

  1. print()衝突するの 2 つの定義があります。1 つ削除します。
  2. あなたにも2つの定義がありmain()ます - あなたの はあなたのと関数#defineを置き換え、効果的に.onemaintwomainmain
于 2014-02-02T08:51:35.880 に答える
0

組み込みの を上書きしましたprint, 約main, ハンドルが 2 つある車を想像してみてください ... うまくいきません ...

C プログラムには 2 つあり、少なくとも 1 つmainあるため、コンピューターはプログラムの開始場所を認識します。2 つの機能を持つ 2 つのファイルがある場合main、2 つの異なるプログラムがあります。

于 2014-02-02T08:45:21.523 に答える