2012-01-17 2 views
7

Я получаю следующее сообщение об ошибке: Multiple определения из `главногокомпиляции времени: Multiple определение «основные»

Я создал новый проект, есть два 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

Какие изменения мне нужно сделать, удалить ИНТ основной() из файла 2? – sandbox

+0

Вы можете изменить имя и назвать его там, где вам это нужно. Или файлы в двух разных проектах. – atoMerz

+0

дают обе эти функции разные имена и делают main() принимать аргументы (int argc, char * argv []). Затем используйте аргументы, переданные для определения, какую из двух ваших функций вызывать. – CashCow

ответ

11

Вы не можете иметь две основные функции в одном проекте. Поместите их в отдельные проекты или переименуйте одну из функций и вызовите ее из другой основной функции.

В вашем проекте никогда не может быть больше одной функции 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"; 
} 

Не забудьте, соответствующий ему директив #includes.

4

У вас не может быть двух основных функций. На самом деле у вас не может быть двух функций, имеющих одну и ту же подпись, через ваш проект (а не ваши файлы).
И поскольку Mr.TAMER сказал, что основной - это особый случай, вы не можете даже иметь две функции: main.

+1

Просто продолжая ответ AtoMerZ, 'main' - это особый случай, вы не можете иметь две функции с именем' main' независимо от того, как отличаются их списки параметров (например, подпись). –

+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.c (первый переименовывать основной() из file2)

1
  1. Решите, какой файл вы хотите быть точкой входа в свой проект.

  2. В другом файле, измените имя метода на другое имя. вы можете вызвать его из файла, который вы выбрали на шаге 1.

main является точкой входа вашей программы, и вы не можете иметь более чем одну точку входа.

Для более ясного объяснения увидеть это: Two 'main' functions in C/C++

Смежные вопросы