आज मैंने अपने कार्यक्रम में एक छोटा टाइपो बनाया, और घूम रहा था कि मुझे कोई आउटपुट क्यों नहीं मिला, हालांकि कार्यक्रम ठीक से संकलित हुआ। मूल रूप से यह कम कर देता है:<<बजाय << स्ट्रीम आउटपुट में संकलन क्यों करता है?
#include <iostream>
int main()
{
std::cout < "test"; // no << but <
}
मैं बिल्कुल पता नहीं अंतर्निहित रूपांतरण किस तरह यहां किया जाता है तो कार्यक्रम अभी भी संकलित है (दोनों जी ++ 4.9.2 और यहां तक कि जी ++ 5)। मुझे अभी एहसास हुआ कि क्लैंग ++ कोड को खारिज कर देता है। क्या void*
पर कोई रूपांतरण किया जा रहा है (कुछ और नहीं सोच सकता)? मुझे ऐसा कुछ याद आ रहा है, लेकिन मैंने सोचा कि इसे जी ++ 5 में संबोधित किया गया था, लेकिन ऐसा लगता है कि यह मामला नहीं है।
संपादित करें: मैं -std=c++11
साथ संकलन नहीं कर रहा था, इसलिए कोड में मान्य था पूर्व सी ++ 11 (ostream
की void*
करने के लिए रूपांतरण के कारण)। -std=c++11
g ++ 5 के साथ संकलन करते समय कोड को अस्वीकार कर दिया जाता है, g ++ 4.9 अभी भी इसे स्वीकार करता है।
मुझे एक अप्रयुक्त गणना मूल्य के बारे में g ++ 4.9.2 से चेतावनी मिलती है, हालांकि '-Wall' का उपयोग करते समय भी। –
@ राफेल वास्तव में, जब मैंने संकलित किया तो मैंने सभी चेतावनियों को नहीं देखा, अब मैं देखता हूं और महसूस किया कि क्या हुआ, हालांकि यह कहना चाहिए कि यह थोड़ा असामान्य है। मैं ज्यादातर समय '-वॉल' का उपयोग करता हूं, हालांकि यह कोड का एक छोटा टुकड़ा था जिसे मैंने उत्कृष्ट पाठ में संकलित किया और महसूस किया कि यह जादुई रूप से काम करता है – vsoftco
क्यों [यह] (http://coliru.stacked-crooked.com/a/ 667a9c3ad1ee9afe) आउटपुट के रूप में 0 देता है? – Destructor