2012-01-17 18 views
7

मैं निम्न त्रुटि हो रही है: के एकाधिक परिभाषा `मुख्य 'संकलन समय त्रुटि: के एकाधिक परिभाषा 'मुख्य'

मैं एक नई परियोजना बनाई है, उसमें दो 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

इन दोनों कार्यों को अलग-अलग नाम देते हैं और मुख्य() तर्क लेते हैं (int argc, char * argv [])। फिर यह निर्धारित करने के लिए पारित तर्कों का उपयोग करें कि आपके दो कार्यों में से कौन सा कॉल है। – CashCow

उत्तर

11

आपके पास एक ही प्रोजेक्ट में दो मुख्य कार्य नहीं हो सकते हैं। उन्हें अलग परियोजनाओं में रखें या कार्यों में से एक का नाम बदलें और इसे अन्य मुख्य समारोह से कॉल करें।

आपके प्रोजेक्ट में कभी भी एक से अधिक मुख्य() फ़ंक्शन नहीं हो सकते हैं क्योंकि यह प्रवेश बिंदु है, इससे कोई फर्क नहीं पड़ता कि पैरामीटर सूची कैसा है।

हालांकि पैरामीटर सूची अलग होने तक आप अन्य कार्यों की कई घोषणाएं कर सकते हैं (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

आपके पास दो मुख्य कार्य नहीं हो सकते हैं। असल में आपके पास अपने प्रोजेक्ट (आपकी फाइलें नहीं) के माध्यम से एक ही हस्ताक्षर वाले दो कार्य नहीं हो सकते हैं।
और जैसा कि श्री टीएएमईआर ने कहा कि मुख्य एक विशेष मामला है, आप main नामक दो कार्य भी नहीं कर सकते हैं।

+1

बस एटोमेज़ के उत्तर को जारी रखना, 'मुख्य' एक विशेष मामला है, आपके पास 'मुख्य' नाम के साथ दो कार्य नहीं हो सकते हैं इससे कोई फर्क नहीं पड़ता कि उनकी पैरामीटर सूचियां (i.e हस्ताक्षर) भिन्न होती हैं। –

+0

@ श्री टामर: धन्यवाद। मैंने संपादित किया – atoMerz

0

आप एक ही प्रोजेक्ट में एक ही फ़ंक्शन हस्ताक्षर का उपयोग नहीं कर सकते हैं, क्योंकि कंपाइलर मुख्य() से निष्पादन प्रारंभ करता है। यदि आप मुख्य() के कई बार परिभाषित करते हैं तो यह एक त्रुटि उत्पन्न करता है।

file1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

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

और file2.h में, आप file2.c के समारोह को परिभाषित कर सकते (प्रथम करें 2 का मुख्य नाम बदलने())

1
  1. तय करें, जो फ़ाइल आप अपनी परियोजना के प्रवेश बिंदु के रूप में बनना चाहते हैं।

  2. अन्य फ़ाइल में, विधि का नाम किसी अन्य नाम में बदलें। चरण 1.

main पर फ़ाइल आपके द्वारा चुने गए से यह कॉल कर सकते हैं अपने कार्यक्रम के प्रवेश बिंदु है और आप एक से अधिक प्रवेश बिंदु नहीं हो सकता।

के लिए और अधिक स्पष्ट विवरण इस देखें: Two 'main' functions in C/C++

संबंधित मुद्दे