में __attribute__ का उपयोग करके असंतुलित ब्रांडेसिस आज मैंने कुछ समय पहले विकसित एक परियोजना पर झुकाव की कोशिश की। जब मुझे संकलन त्रुटि का सामना करना पड़ा, तो मुझे आश्चर्य हुआ, क्योंकि मैंने अपनी परियोजना को जी ++ का सफलतापूर्वक संकलित किया था।जी ++
int main() {
__attribute__((aligned(16)) char arr[5];
}
कौन इस त्रुटि पैदा करता है:
test.cpp:2:32: error: expected ')'
__attribute__((aligned(16)) char arr[5];
^
)
आप देख सकते हैं, वहाँ एक umbalanced कोष्ठक है
यह छोटा स्निपेट लाइन जहां त्रुटि आई थी reproduces। तीन '(', और दो ') हैं। यह स्पष्ट रूप से ऐसा लगता है कि इसे वास्तव में एक संकलन त्रुटि उत्पन्न करना चाहिए।
क्या यह इस कीवर्ड का वैध उपयोग है? मुझे the documentation पर कुछ भी नहीं मिल रहा है जो इंगित करता है कि यह है।
मैं जी ++ 4.5.2 और क्लैंग 2.8 का उपयोग कर रहा हूं।
ध्यान दें कि g ++ के बजाय gcc का उपयोग करते समय यह त्रुटि पता चला है।
[जीसीसी दस्तावेज] (http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html) कहता है * "कीवर्ड '__attribute__' आपको चर या संरचना फ़ील्ड के विशेष विशेषताओं को निर्दिष्ट करने की अनुमति देता है। * * इस कीवर्ड के बाद डबल ब्रांड्स के अंदर एक विशेषता विनिर्देशन होता है "***। इसलिए यह समान संख्या में ब्रांड्स के साथ बंद होने के बारे में सटीक स्पष्ट शब्दों में नहीं कहता है लेकिन सभी जीसीसी उदाहरण मिलान करने वाले कोष्ठक दिखाते हैं, इसलिए एक बग की तरह दिखता है। –
हां, ऐसा लगता है कि यह वास्तव में एक बग है। मुझे कुछ भी नहीं मिला जो विपरीत संकेत दे सकता है। – mfontanini
@ डेविडरोड्रिग्ज-ड्राईबीस क्लैंग इसका समर्थन करता है। मेरा मतलब है, यह वास्तव में ऐसा लगता है कि g ++ उस एक्सप्रेशन को सही ढंग से पार्स नहीं कर रहा है। क्लैंग सही काम कर रही है (कम से कम मुझे संदेह है ... यही कारण है कि मैं पूछ रहा हूं: डी) यहां एक त्रुटि की रिपोर्ट करते समय। – mfontanini