2012-12-29 34 views
6

तो मैं हेडर फाइलें बनाना सीख रहा हूं। यहाँ मेरी कोड (तीन अलग फ़ाइलों)सी ++ सीखने हेडर फाइलें। इस अर्धविराम के साथ क्या हो रहा है?

//Main.cpp 
#include <iostream> 
#include "functions.h" 
; 
using namespace std; 

int main() 
{ 
    cout << multiply(3, 4) << endl; 

    return 0; 
} 

//functions.cpp 
int multiply(int x, int y) 
{ 
    return x * y; 
} 

//functions.h 
#ifndef FUNCTIONS_H_ 
#define FUNCTIONS_H_ 

int multiply(int x, int y) 

#endif 

कोड संकलित करता है तथा रन है, लेकिन बात यह है कि मुझे परेशान कर रहा है main.cpp में है। "Functions.h" के नीचे और "उपनाम का उपयोग कर" के नीचे अर्धविराम है।

मैंने इसे वहां रखा क्योंकि दृश्य स्टूडियो ने कहा कि यह एक की उम्मीद कर रहा था, लेकिन मुझे नहीं पता कि क्यों। मैं इसे ट्यूटोरियल्स में नहीं देखता हूं।

निश्चित रूप से, यह काम करता है। लेकिन मुझे यह नहीं पता कि यह क्यों है और यह नहीं होना चाहिए।

सहायता के लिए धन्यवाद!

+0

चूंकि आप सी ++ सीख रहे हैं, कृपया मानक लाइब्रेरी में केवल प्रकार/फ़ंक्शंस को पूरी तरह अर्हता प्राप्त करना सीखें। टाइपिंग 'std ::' वह कठिन नहीं है। – Praetorian

+0

बस इसके बारे में थोड़ा सा पढ़ा। यह समझ में आता है कि आप एक हेडर फ़ाइल नाम नहीं रखेंगे। लेकिन क्या आप कहेंगे कि मेरे व्यक्तिगत परीक्षण कोडिंग में इसे छोड़ने के लिए व्यावहारिक उपयोग है? (आदत बनाने के अलावा) – Wimp

+2

आपने @Praetorian नहीं जोड़ा है, इसलिए शायद वह आपका प्रश्न नहीं देख पाए। 'नेमस्पेस' कथन का उपयोग करने का मुद्दा राय से भरा धार्मिक बहस है, और मेरी धार्मिक राय यह है कि छोटे कार्यक्रमों के लिए, यह बिल्कुल ठीक है। और यदि आप अकेले हैं जो कभी भी इस पर काम करेंगे, तो जो भी बिल्ली आप कृपया करते हैं। लेकिन जैसा कि आपने देखा, बुरी आदतों को विकसित करने के लिए देखें। –

उत्तर

14

क्योंकि आप functions.h में एक अर्धविराम याद

int multiply(int x, int y); 
          ^^^^ here 

सी ++ अर्धविराम बयान अलग करती है।

#include directive "functions.h" फ़ाइल की सामग्री को आपके फ़ाइल की सामग्री के साथ संकलक को भेजने के कारण भेजता है। इसका नतीजा यह है कि हेडर फाइलों में गलतियों के कारण संकलन त्रुटियों को अक्सर कोड में रिपोर्ट किया जाता है जिसमें उन्हें शामिल किया जाता है। (थैक्स को फिलिप)

+0

एएच विषय के लिए एक अच्छा दृष्टिकोण की तरह लगता है! मुझे पता था कि यह कुछ बेवकूफ सरल होगा। आपका बहुत बहुत धन्यवाद! अब काम करता है :) – Wimp

+4

क्या ध्यान दिया जाना चाहिए: सी ++ में निर्देश शामिल करने का अर्थ कुछ भी नहीं है, लेकिन "उस फ़ाइल की सामग्री को कॉपी और पेस्ट करें"। इसका नतीजा यह है कि हेडर फ़ाइलों में गलतियों के कारण संकलन त्रुटियों को अक्सर कोड में रिपोर्ट किया जाता है जिसमें उन्हें शामिल किया जाता है। – Philipp

+0

तुम्हारा मतलब है जैसे मैंने अपने जवाब में कहा था? लेकिन क्योंकि मुझे इसे टाइप करना पड़ा, मैं पहले वहां नहीं गया था। –

6

चूंकि सी प्रीप्रोसेसर सी के सिंटैक्स के बारे में कुछ भी नहीं जानता है - आप इसका उपयोग कर सकते हैं यदि आप चाहें तो ईमेल, असेंबलर स्रोत फ़ाइलों या HTML को एक साथ रखने के लिए, यह वास्तव में संकलित करने के लिए संकलक के लिए सभी स्रोतों को एक लंबी फ़ाइल में रखता है।

और आप "functions.h" में int multiply(int x, int y) के बाद अर्धविराम खो रहे हैं।

+0

+1। क्या एक उपन्यास विचार = पी – WhozCraig