2013-01-12 12 views
12

संभव डुप्लिकेट:
A function-definition is not allowed here before ‘{’एक बयान के साथ एक लाइन से पहले एक एकल लाइन टिप्पणी के माध्यम से बग

मैं, इस बग मैं अपने कोड में किया था साझा करना चाहते हैं में से एक खोजने के लिए मुश्किल:

#include <iostream> 

void StartNuclearWar() { 
    std::cout << "War in progress..." << std::endl; 
} 

int main() 
{ 
    int a = 0; 

    // Get activation codes from C:\codes\ 
    a = 1; 

    if(a == 0) { 
     StartNuclearWar(); 
    } 
} 

यह कहां है?

+0

मैं परमाणु युद्ध देखना चाहता हूं! – StackedCrooked

+0

हे। मैंने सोचा कि केवल प्रीप्रोसेसर ने – Ancurio

+1

@ एंकुरियो का बैक-स्लेश का इलाज किया है यह प्रीप्रोसेसर है जो टिप्पणियों को नियंत्रित करता है (जैसा कि, उन्हें स्ट्रीम से शुद्ध करता है)। –

उत्तर

10

बग टिप्पणी में है: हमारे लिए अंतिम \ वर्ण एक निर्देशिका का प्रतिनिधित्व करता है, संकलक के लिए इसका मतलब है कि निम्न पंक्ति वर्तमान रेखा का हिस्सा है। बेशक प्रत्येक डेवलपर जानता है कि, लेकिन इस मामले में यह विवरण काफी छिपा हुआ है।

+0

अब यह बेहतर संगठित है। +1। –

+1

यहां तक ​​कि सुंदर भी नहीं है (यहां इंजन) सही ढंग से संभाल सकता है –

+3

कंपाइलर चेतावनी पर ध्यान देना इस तरह की बग खोजने में महत्वपूर्ण मदद कर सकता है। 'एमएसवीसी' डिफ़ॉल्ट रूप से चेतावनी उत्पन्न करता है, 'gcc', जब' -कॉममेंट' ('-Wall') प्रदान किया जाता है। – Lol4t0

2

नाइस गोचा, एमएसडीएन इस line splicing पर कॉल करता है।

सभी एक बैकस्लैश (\) और तुरंत एक नई पंक्ति चरित्र के बाद में समाप्त होने लाइनों स्रोत फ़ाइल शारीरिक लाइनों से तार्किक लाइनों के गठन में अगली पंक्ति के साथ जुड़े हुए हैं। जब तक कि यह खाली न हो, एक स्रोत फ़ाइल को एक न्यूलाइन वर्ण में समाप्त होना चाहिए जो बैकस्लैश से पहले नहीं है।

+0

क्षमा करें, बैकस्लैश दृश्यमान बनाने के लिए मामूली संपादन, क्योंकि आपके उद्धरण को समझ में नहीं आया था। –

+0

@Damien_The_Unbeliever धन्यवाद :) – Steve

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