2012-01-17 20 views
7

estoy consiguiendo el error siguiente: definición múltiple de `main'tiempo de compilación: definición múltiple de 'principal'

He creado un nuevo proyecto, hay dos archivos de C++ en ella:

presento 1

#include <iostream> 

using namespace std; 

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

archivo 2

#include <iostream> 

using namespace std; 

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

Cuando presiono generación de proyecto y de ejecución, me sale error. ¿Cómo ejecuto estos archivos?

+0

¿Qué cambios necesito hacer, puedo eliminar int main() del archivo 2? – sandbox

+0

Puede cambiar el nombre y llamarlo donde sea que lo necesite. O tenga los archivos en dos proyectos diferentes. – atoMerz

+0

asigna a estas funciones diferentes nombres y hace que main() tome argumentos (int argc, char * argv []). Luego use los argumentos aprobados para determinar a cuál de sus dos funciones debe llamar. – CashCow

Respuesta

11

No puede tener dos funciones principales en el mismo proyecto. Póngalos en proyectos separados o cambie el nombre de una de las funciones y llámela de la otra función principal.

Nunca puede tener más de una función main() en su proyecto, ya que es el punto de entrada, sin importar cómo sea la lista de parámetros.

Sin embargo, puede tener múltiples declaraciones de otras funciones siempre que la lista de parámetros sea diferente (function overloading).

Archivo 1

#include <iostream> 

using namespace std; 

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

Archivo 2

#include <iostream> 

using namespace std; 

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

No olvide los #includes apropiados.

4

No puede tener dos funciones principales. De hecho, no puede tener dos funciones con la misma firma a través de su proyecto (no sus archivos).
Y como Mr.TAMER dijo main es un caso especial, ni siquiera puede tener dos funciones llamadas main.

+1

Simplemente continuando la respuesta de AtoMerZ, 'main' es un caso especial, no puede tener dos funciones con el nombre' main' sin importar cómo difieran sus listas de parámetros (es decir, la firma). –

+0

@ Mr.TAMER: Gracias. Yo edité – atoMerz

0

No se puede usar la misma firma de función en un mismo proyecto, porque el compilador inicia la ejecución desde main(). Si define múltiples veces de main(), entonces produce un error.

Archivo1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

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

Y en file2.h, se puede definir la función de Archivo2.c (primero cambiar el nombre del main() del archivo 2)

1
  1. Decidir qué archivo quieres ser el punto de entrada de tu proyecto

  2. En otro archivo, cambie el nombre del método por otro nombre. se le puede llamar desde el archivo que eligió en el paso 1.

main es punto de entrada de su programa y no se puede tener más de un punto de entrada.

Para una explicación más clara ver esto: Two 'main' functions in C/C++

Cuestiones relacionadas