C++ weird compilation error on removing a variable -


निम्न कोड g ++ 4.8.1 नहीं करता है <पूर्व> स्ट्रक्चर लेयर {typedef struct विजेट} {} विजेट; आभासी शून्य मज़ा (शून्य) {struct विजेट w; } विजेट्स w, x, y, z; };

हालांकि, अगर मैं सिर्फ widgets w, x, y का उपयोग करता हूं; // इसे हटायें चर

यह क्यों हो रहा है?

यह जीसीसी में एक बग है

रेफरी: -

जी ++ निम्न कोड को अस्वीकार करता है:

  वर्ग फ़ू {bool a, b, c, d; typedef संरचना बार {} बार; आभासी शून्य foo (शून्य) {struct बार बार; }}; example.cc: सदस्य फ़ंक्शन में "आभासी शून्य foo :: foo () एक उदाहरण: example.cc:6: त्रुटि: typedef-name â ???? Foo :: Barâ ??? ? के बाद एक ???? Example.cc:4: त्रुटि: एक फू :: बार यहां एक पिछले घोषणा है उदाहरण example.cc:6: त्रुटि: '';; ??? '' से पहले घोषणा में अमान्य प्रकार टोकन   

लेकिन ऐसे कई उदाहरणों को स्वीकार करता है, जिनमें निम्न शामिल हैं:

  वर्ग फ़ू {bool a, b, c; Typedef संरचना बार {} बार; आभासी शून्य foo (शून्य) {struct बार बार; }};   

यह व्यवहार x86_64-redhat-linux (4.1.2 और 4.4.0) और i386-pc-solaris2.11 (4.2.4, 4.3.4 और 4.5.1 पर प्रतिलिपि प्रस्तुत करने योग्य है )

मुझे अनिश्चितता है कि यह मानक के अनुसार सख्ती से कानूनी है या नहीं, लेकिन इन मामलों में से किसी एक को स्वीकार करने का मतलब नहीं लगता है, बल्कि अन्य ... < / blockquote>

यह नवीनतम जीसीसी 4.9.0 में तय किया गया है

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -