2012-01-17 13 views
7

sto ottenendo il seguente errore: Multiple definizione di `main'di compilazione: la definizione multipla di 'main'

ho creato un nuovo progetto, ci sono due file C++ in esso:

File 1

#include <iostream> 

using namespace std; 

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

File 2

#include <iostream> 

using namespace std; 

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

Quando premo costruire progetto e Run, ottengo l'errore. Come eseguo questi file?

+0

Quali modifiche devo fare, posso rimuovere int main() da FILE 2? – sandbox

+0

Puoi cambiare il nome e chiamarlo dove ti serve. O avere i file in due diversi progetti. – atoMerz

+0

assegna a entrambe le funzioni nomi diversi e make main() accetta argomenti (int argc, char * argv []). Quindi utilizzare gli argomenti passati per determinare quale delle due funzioni chiamare. – CashCow

risposta

11

Non è possibile avere due funzioni principali nello stesso progetto. Inseriscili in progetti separati o rinomina una delle funzioni e chiamala dall'altra funzione principale.

Non è mai possibile avere più di una funzione main() nel progetto poiché è il punto di accesso, indipendentemente dall'elenco dei parametri.

È tuttavia possibile avere più dichiarazioni di altre funzioni purché l'elenco dei parametri sia diverso (function overloading).

File 1

#include <iostream> 

using namespace std; 

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

File 2

#include <iostream> 

using namespace std; 

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

Non dimenticate i #include appropiate.

4

Non è possibile avere due funzioni principali. In effetti non è possibile avere due funzioni che abbiano la stessa firma attraverso il tuo progetto (non i tuoi file).
E come Mr.TAMER ha detto che main è un caso speciale, non è possibile avere due funzioni chiamate main.

+1

Continuando semplicemente con la risposta di AtoMerZ, 'main' è un caso speciale, non è possibile avere due funzioni con il nome' main', indipendentemente dal modo in cui i loro elenchi di parametri (i.e signature) differiscono. –

+0

@ Mr. TAMER: Grazie. Ho modificato – atoMerz

0

Non è possibile utilizzare la stessa firma di funzione in uno stesso progetto, poiché il compilatore avvia l'esecuzione da main(). Se si definiscono più volte di main(), viene generato un errore.

file1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

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

E in file2.h, è possibile definire la funzione di file2.c (prima rinominare il main() del file2)

1
  1. Decidere quale file vuoi essere il punto di ingresso del tuo progetto.

  2. In un altro file, modificare il nome del metodo con un altro nome. si può chiamare dal file scelto al punto 1.

main è punto di ingresso del programma e non si può avere più di un punto di ingresso.

Per una spiegazione più chiara vedere questo: Two 'main' functions in C/C++

Problemi correlati