2014-10-27 4 views
2

Привет, я просмотрел все ту же ошибку, что и я, но я не получил решение для своей проблемы, поэтому I am using MS VC++ 2010 и у меня есть два файла a.c and b.c,, каждый из них не работает без ошибок, и каждый имеет простой код и понятен. Но когда я использую их для сбора показывает эту ошибку **error LNK2005: _main already defined in a.c ** эта же ошибка показывает код блока IED. Я думаю, что это относится к использованию основной функции дважды. Теперь, как я могу использовать одну основную функцию как для файлаОшибка LNK2005: _main уже определено в hold.obj

код файла переменного

#include<stdio.h> 
#include<conio.h> 

main() 
{ 
    int a =9; 
    if(a==7) 
    { 
     puts("This is number seven "); 
    } 
    else 
    { 
     puts("This isn't number seven "); 
    } 

    getch(); 
} 

код файла Ьс

#include<stdio.h> 
#include<conio.h> 

main() 
{ 
    int x=10; 

    printf("%d", x); 
    getch(); 
}  
+0

не могли бы вы выслать свои коды для a.c и b.c? Это не имеет никакого смысла. Кроме того, если использовать две основные функции, создайте файл 'exec_main.c' и разместите там свою основную функцию. – ha9u63ar

+2

'Теперь как я могу использовать одну основную функцию для обоих файлов? Определите одну функцию' main'. – user657267

+0

@ user657267 правильный! Кроме того, вы знаете, что все работает от одного основного потока, так что у вас не может быть двух в любом случае. – ha9u63ar

ответ

5

Это не возможно иметь две основные функции, программа начинает работать в только 1 главная функция. Вы можете переименовать основные функции и создать одну главную функцию, которая называет их обоих.

Code file a.c 

#include <stdio.h> 
#include <conio.h> 

void a_main() 
{ 
    int a =9; 
    if(a==7) 
    { 
     puts("This is number seven "); 
    } 
    else 
    { 
     puts("This isn't number seven "); 
    } 


    getch(); 
} 

код файла b.c

#include <stdio.h> 
#include <conio.h> 

void main() 
{ 
    a_main(); 
    b_main(); 
} 

void b_main() 
{ 
    int x=10; 

    printf("%d", x); 
    getch(); 
} 

Обратите внимание, что это хорошая практика, чтобы carfully функции имен так, что имена описывают то, что они делают. Например, в этом примере вы можете вызвать a_main PrintIs7OrNot и b_main Print10.

+0

Большое спасибо, это работает, так что, если у меня много файлов? – Basil

+0

@Basil - Сколько? Вам нужны все эти основные функции в одной программе, или они могут быть в своей собственной программе? Вы могли бы просто продолжить: c_main, d_main, e_main и т. Д. –

+0

На самом деле спасибо Скотту и, пожалуйста, мне нравится спрашивать вас, пытливый, теперь главный активный файл ac запускает его код, так как я могу сделать bc активным, чтобы запустить его код ? – Basil

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