2012-01-17 9 views
7

の複数の定義:コンパイル時エラー:私は次のエラーを取得しています「メイン」

: `メインの

の複数の定義を私は新しいプロジェクトを作成して、その中の2つのC++ファイルがあります私はプロジェクトをビルドして実行キーを押すと、私はエラーを取得する1

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    //fflush(stdin); 
    //getchar(); 
    return 0; 
} 

ファイル2

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Demo Program"; 
    return 0; 
} 

ファイル。これらのファイルをどのように実行するのですか?

+0

のint main()のFILE 2から? – sandbox

+0

名前を変更して、いつでも必要な場所で呼び出すことができます。または、2つの異なるプロジェクトにファイルを用意します。 – atoMerz

+0

これらの関数の両方に異なる名前を付け、main()が引数を取るようにします(int argc、char * argv [])。次に渡された引数を使用して、あなたの2つの関数のどちらを呼び出すかを決定します。 – CashCow

答えて

11

同じプロジェクトに2つの主要機能を持つことはできません。それらを別々のプロジェクトに置くか、関数の1つをリネームして、それを他のメイン関数から呼び出す。

パラメータリストが何であっても、エントリポイントであるため、プロジェクト内に複数のmain()関数を持つことはできません。

しかし、パラメータリストが異なる限り(function overloading)、他の関数の宣言を複数持つことができます。

ファイル1つの

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    otherFunction(); 
    return 0; 
} 

ファイル2

#include <iostream> 

using namespace std; 

void otherFunction() 
{ 
    cout<<"Demo Program"; 
} 

いけないappropiateの#includeを忘れてしまいました。

4

主な機能は2つありません。実際には、あなたのプロジェクトから(ファイルではなく)同じ署名を持つ2つの関数を持つことはできません。
Mr.TAMERはメインが特別なケースだと言って、mainという2つの機能を持つことさえできません。

+1

AtoMerZの答えを続けても、 'main'は特別なケースです。パラメータリスト(つまり、署名)の違いにかかわらず、' main'という名前の2つの関数を持つことはできません。 –

+0

@ Mr.TAMER:ありがとう。私は編集しました。 – atoMerz

0

コンパイラがmain()からの実行を開始するため、同じプロジェクトで同じ関数シグネチャを使用することはできません。 main()を複数回定義すると、エラーが発生します。

FILE1.C

#include <iostream> 

#include <file2.h> 
using namespace std; 

int main() 
{ 
cout<<"Hello World"; 
//fflush(stdin); 
//getchar(); 
return 0; 
} 

そしてfile2.hに、あなたは(FILE2の最初の(メインの名前を変更))file2.cの関数を定義することができます

1
  1. がファイルを決定あなたはプロジェクトのエントリーポイントになりたい。

  2. 他のファイルでは、メソッド名を別の名前に変更します。あなたは、あなたのプログラムのエントリポイントがあるステップ1

mainで、選択したファイルからそれを呼び出すことができますし、複数のエントリ・ポイントを持つことができません。

より明確な説明はこれを参照してください:私が行う必要がありますどのような変更、私は削除しますかTwo 'main' functions in C/C++

関連する問題