2012-01-17 11 views
7

otrzymuję następujący błąd: wielokrotnej definicji `main'kompilacji: Wielokrotna definicja „głównego”

Stworzyłem nowy projekt, w nim są dwie C++ pliki:

Plik 1

#include <iostream> 

using namespace std; 

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

Plik 2

#include <iostream> 

using namespace std; 

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

Po naciśnięciu Budowanie projektu i Uruchom, otrzymuję błąd. Jak uruchomić te pliki?

+0

Jakie zmiany trzeba uczynić, mogę usunąć int main() z pliku 2? – sandbox

+0

Możesz zmienić nazwę i zadzwonić tam, gdzie jej potrzebujesz. Lub mieć pliki w dwóch różnych projektach. – atoMerz

+0

nadaje obu funkcjom różne nazwy i sprawia, że ​​main() przyjmuje argumenty (int argc, char * argv []). Następnie użyj przekazanych argumentów, aby określić, z której z dwóch funkcji chcesz zadzwonić. – CashCow

Odpowiedz

11

Nie można mieć dwóch głównych funkcji w tym samym projekcie. Umieść je w osobnych projektach lub zmień nazwę jednej z funkcji i wywołaj ją z drugiej głównej funkcji.

Nigdy nie można mieć więcej niż jednej funkcji main() w projekcie, ponieważ jest to punkt początkowy, niezależnie od listy parametrów.

Można jednak mieć wiele deklaracji innych funkcji, o ile lista parametrów jest inna (function overloading).

Plik 1

#include <iostream> 

using namespace std; 

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

Plik 2

#include <iostream> 

using namespace std; 

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

Dont zapomnieć jest właściwa właczoną.

4

Nie można mieć dwóch głównych funkcji. W rzeczywistości nie można mieć żadnych dwóch funkcji mających ten sam podpis przez cały projekt (nie pliki).
A ponieważ Mr.TAMER powiedział, że główny jest szczególnym przypadkiem, nie można nawet mieć dwóch funkcji o nazwie main.

+1

Po prostu kontynuując odpowiedź AtoMerZ, 'main' jest szczególnym przypadkiem, nie możesz mieć dwóch funkcji o nazwie' main' bez względu na to, jak różnią się ich listy parametrów (np. Podpis). –

+0

@ Mr.TAMER: Dzięki. Edytowałem. – atoMerz

0

Nie można użyć tego samego podpisu funkcji w tym samym projekcie, ponieważ uruchomienie kompilatora rozpoczyna się od metody main(). Jeśli zdefiniujesz wiele razy funkcji main(), to wystąpi błąd.

file1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

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

I file2.h można zdefiniować funkcję file2.c (pierwsza zmiana nazwy main() z plik2)

1
  1. Zdecyduj, który plik chcesz być punktem wejścia do swojego projektu.

  2. W innym pliku zmień nazwę metody na inną. można nazwać to z pliku wybranego w kroku 1.

main jest punkt wejścia programu i nie może mieć więcej niż jeden punkt wejścia.

Dla bardziej jasne wytłumaczenie zobaczyć: Two 'main' functions in C/C++