c++ - इस कार्यक्रम को तीन सी ++ कंपाइलर्स द्वारा गलती से क्यों खारिज कर दिया गया है?




15 Answers

मानक में, §2.1 / 1 निर्दिष्ट करता है:

भौतिक स्रोत फ़ाइल वर्णों को कार्यान्वित-परिभाषित तरीके से मैप किया जाता है, मूल स्रोत वर्ण सेट (यदि आवश्यक हो तो अंतराल संकेतकों के लिए नए-पंक्ति वर्ण प्रस्तुत करना)।

आपका कंपाइलर उस प्रारूप का समर्थन नहीं करता है (उर्फ इसे मूल स्रोत चरित्र सेट पर मैप नहीं कर सकता है), इसलिए यह आगे प्रसंस्करण चरणों में नहीं जा सकता है, इसलिए त्रुटि। यह पूरी तरह से संभव है कि आपका कंपाइलर छवि से मूल स्रोत चरित्र सेट में मैपिंग का समर्थन करता है, लेकिन इसकी आवश्यकता नहीं है।

चूंकि यह मैपिंग कार्यान्वयन-परिभाषित है, इसलिए आपको फ़ाइल स्वरूपों को देखने के लिए अपने कार्यान्वयन दस्तावेज़ों को देखना होगा। आम तौर पर, प्रत्येक प्रमुख कंपाइलर विक्रेता पाठ फ़ाइलों को (कैनोनिक रूप से परिभाषित) समर्थन करता है: पाठ संपादक द्वारा उत्पादित कोई भी फ़ाइल, आमतौर पर वर्णों की एक श्रृंखला।

ध्यान दें कि सी ++ मानक सी मानक (§1.1 / 2) से आधारित है, और सी (99) मानक कहता है, §1.2 में:

यह अंतर्राष्ट्रीय मानक निर्दिष्ट नहीं करता है
- वह तंत्र जिसके द्वारा सी प्रोग्राम को डेटा प्रोसेसिंग सिस्टम द्वारा उपयोग के लिए परिवर्तित किया जाता है;
- वह तंत्र जिसके द्वारा सी प्रोग्राम को डेटा प्रोसेसिंग सिस्टम द्वारा उपयोग के लिए बुलाया जाता है;
- जिस तंत्र द्वारा इनपुट डेटा को सी प्रोग्राम द्वारा उपयोग के लिए परिवर्तित किया जाता है;

तो, फिर, स्रोत फ़ाइलों का उपचार ऐसा कुछ है जिसे आपको अपने कंपाइलर दस्तावेज़ों में ढूंढना है।

मुझे एक सी ++ प्रोग्राम संकलित करने में कुछ कठिनाई हो रही है जिसे मैंने लिखा है।

यह कार्यक्रम बहुत आसान है और, मेरे सर्वोत्तम ज्ञान के लिए, सी ++ मानक में निर्धारित सभी नियमों के अनुरूप है। मैंने आईएसओ / आईईसी 14882: 2003 की पूरी तरह से सुनिश्चित करने के लिए दो बार पढ़ा है।

कार्यक्रम निम्नानुसार है:

विजुअल सी ++ 2010 के साथ इस प्रोग्राम को संकलित करने का प्रयास करते समय मुझे प्राप्त आउटपुट यहां दिया गया है:

c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172

निराश, मैंने g ++ 4.5.2 की कोशिश की, लेकिन यह उतना ही असहाय था:

c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status

मुझे लगा कि क्लेंग (संस्करण 3.0 ट्रंक 127530) काम करना चाहिए, क्योंकि इसकी मानकों के अनुरूप इसकी अत्यधिक सराहना की जाती है। दुर्भाग्य से, यह मुझे अपने सुंदर, हाइलाइट किए गए त्रुटि संदेशों में से एक भी नहीं दिया:

c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)

ईमानदार होने के लिए, मुझे वास्तव में पता नहीं है कि इनमें से कोई भी त्रुटि संदेश क्या है।

कई अन्य सी ++ प्रोग्रामों में एक .cpp एक्सटेंशन के साथ स्रोत फ़ाइलें होती हैं, इसलिए मैंने सोचा कि शायद मुझे अपनी फ़ाइल का नाम बदलने की आवश्यकता है। मैंने अपना नाम helloworld.cpp में बदल दिया, लेकिन इससे मदद नहीं मिली। मुझे लगता है कि क्लैंग में एक बहुत ही गंभीर बग है क्योंकि जब मैंने इसका नाम बदलकर प्रोग्राम को संकलित करने के लिए उपयोग करने का प्रयास किया, तो यह "84 चेतावनियां और 20 त्रुटियों को उत्पन्न" मुद्रित कर दिया गया। और मेरे कंप्यूटर बीप बहुत बना दिया!

मैंने यहाँ क्या गलत किया है? क्या मैंने सी ++ मानक के कुछ महत्वपूर्ण हिस्से को याद किया है? या क्या सभी तीन कंपाइलर्स वास्तव में इतने टूटे हुए हैं कि वे इस सरल कार्यक्रम को संकलित नहीं कर सकते हैं?




इस तरह से प्रयास करें:




आप निम्न पायथन लिपि को आजमा सकते हैं। ध्यान दें कि आपको PIL और pytesser स्थापित करने की आवश्यकता है।

from pytesser import *
image = Image.open('helloworld.png')  # Open image object using PIL
print image_to_string(image)     # Run tesseract.exe on image

इसका उपयोग करने के लिए, करें:

python script.py > helloworld.cpp; g++ helloworld.cpp



मैं उस अंतिम ब्रेस के बाद एक नई लाइन नहीं देख सकता।

जैसा कि आप जानते हैं: "यदि कोई स्रोत फ़ाइल खाली नहीं है, तो यह एक नए-पंक्ति वर्ण में समाप्त नहीं होती है, ... व्यवहार अपरिभाषित है"।




मैंने पाया है कि यह मेरे मॉनिटर के गिलास पर एक जादू मार्कर के साथ अपना कोड नहीं लिखने में मदद करता है, भले ही यह वास्तव में काला हो तो अच्छा लगे। स्क्रीन बहुत तेजी से भर जाती है और फिर जो लोग मुझे क्लीन मॉनीटर देते हैं, वे मुझे हर हफ्ते नाम देते हैं।

मेरे कुछ कर्मचारी (मैं एक प्रबंधक हूं) मुझे उन लाल पैड कंप्यूटरों में से एक को knobs के साथ खरीदने के लिए चिपक रहा है। उन्होंने कहा कि मुझे मार्करों की आवश्यकता नहीं होगी और जब मैं पूर्ण हो जाऊं तो मैं खुद को स्क्रीन साफ़ कर सकता हूं लेकिन मुझे सावधान रहना होगा। मुझे लगता है कि यह नाजुक है।

यही कारण है कि मैं स्मार्ट लोगों को किराए पर लेता हूं।




आप प्री-प्रोसेसर भूल गए थे। इसे इस्तेमाल करे:

pngtopnm helloworld.png | ocrad | g++ -x 'c++' -



इसे संकलित करने के लिए नीचे शामिल करें:

#include <ChuckNorris>

मैंने सुना है कि वह वाक्यविन्यास त्रुटियों को संकलित कर सकता है ...




क्या आपका कंपाइलर विशेषज्ञ मोड में सेट है ?! यदि हां, तो इसे संकलित नहीं करना चाहिए। आधुनिक कंपाइलर्स "हैलो वर्ल्ड!" से थक गए हैं




ओसीआर कहते हैं:

N lml_�e <loJ+_e__}

.lnt Mk.,n ( ln+ _rSC Lhc_yh )
h_S_
_l

s_l . co__ <, " H llo uo/_d ! '` << s l� . ena_ .
TP__rn _ |
_|

जो उचित होने के लिए बहुत अच्छा अच्छा है।




मैंने आपके प्रोग्राम को पीएनजी से ASCII में परिवर्तित कर दिया है, लेकिन यह अभी तक संकलित नहीं है। आपकी जानकारी के लिए, मैंने पंक्ति चौड़ाई 100 और 250 वर्णों के साथ प्रयास किया लेकिन दोनों तुलनात्मक परिणामों में उपज।

   `         `  .     `.      `         ...                                                         
   +:: ..-.. --.:`:. `-` .....:`../--`.. `-                                                         
           `      `       ````                                                                      
                                                                      `                             
   ` `` .`       ``    .`    `.               `` .      -``-          ..                            
   .`--`:`   :::.-``-. : ``.-`-  `-.-`:.-`    :-`/.-..` `    `-..`...- :                            
   .`         ` `    ` .`         ````:``  -                  ` ``-.`  `                            
   `-                                ..                           ``                                
    .       ` .`.           `   `    `. ` .  . `    .  `    . . .` .`  `      ` ``        ` `       
           `:`.`:` ` -..-`.`-  .-`-.    /.-/.-`.-.  -...-..`- :```   `-`-`  :`..`-` ` :`.`:`- `     
            ``  `       ```.      ``    ````    `       `     `        `    `         `   `   .     
            : -...`.- .` .:/ `                                                                      
    -       `             `` .                                                                      
    -`                                                                                              
    `                                                                                               



आपका फ़ॉन्ट बेकार है, एक पार्सर कभी इसे पढ़ने में सक्षम कैसे होना चाहिए? एक सुलेख पाठ्यक्रम लें।




आप एक छवि संकलित करने की कोशिश कर रहे हैं।

Main.cpp नामक दस्तावेज़ में जो लिखा है उसे टाइप करें, उस फ़ाइल को अपने कंपाइलर के माध्यम से चलाएं, फिर आउटपुट फ़ाइल चलाएं।




जोड़ें:

using namespace std;

सही बाद में शामिल: पी: डी




समस्या वाक्यविन्यास परिभाषा के साथ निहित है, अधिक शास्त्रीय वर्णन के लिए शासक और कंपास का उपयोग करने का प्रयास करें!

चीयर्स,




आप ब्रैकेट के लिए अलग-अलग रंगों का प्रयास कर सकते हैं, शायद कुछ हरा या लाल मदद करेगा? मुझे लगता है कि आपका कंपाइलर काला स्याही को पहचान नहीं सकता है: पी




Related

c++ visual-c++ compiler-errors clang