में सख्त एलियासिंग चेतावनियों को सक्षम करना g ++ में सख्त एलियासिंग चेतावनियों को सक्षम करने का सही तरीका क्या है? क्या वीसी ++ 10 उन नियमों को लागू करता है?g ++
g ++
उत्तर
-fstrict-aliasing
g++
के लिए उपयोग करें। सख्त एलियासिंग नियमों के संभावित उल्लंघनों से संबंधित चेतावनियों को देखने के लिए मैं -Wstrict-aliasing=2
का भी उपयोग करता हूं।
वे स्वचालित रूप से -O2
द्वारा सक्षम हैं क्योंकि इसे कुछ अनुकूलन करने के लिए उपयोग करने की आवश्यकता है। निश्चित रूप से चेतावनी के साथ इसे गठबंधन करें (-Wall
चाल करता है) यह सुनिश्चित करने के लिए कि आप संभावित रूप से छोटी गाड़ी कोड नहीं बना रहे हैं। अन्यथा आप -fstrict-aliasing
का उपयोग कर सकते हैं जैसा कि उन्हें सक्षम करने के लिए किसी अन्य उत्तर में देखा गया है।
हालांकि मुझे वीसी ++ 10 के बारे में निश्चित नहीं है।
वीसी ++ 10 सख्त एलियासिंग नियम/ओ 1 और ऊपर के साथ सक्षम बनाता है। मैं here के 'स्ट्राइक एलिसाइजिंग नियम के लिए लाभ' अध्याय में परीक्षण कार्यक्रम (गिनती मूल्य 6 के साथ) का उपयोग करता हूं। और एएसएम कोड निम्नलिखित प्राप्त करें। आप देख सकते हैं कि बी का भार केवल एक बार किया जाता है।
00A910AE movzx edx,word ptr [edx+2] //Load of b
00A910B2 xor eax,eax
00A910B4 xor ecx,ecx
00A910B6 add dword ptr [esp+eax*4+34h],edx //Loop start
00A910BA add eax,1
00A910BD adc ecx,edi
00A910BF jne main+76h (0A910C6h)
00A910C1 cmp eax,6
00A910C4 jb main+66h (0A910B6h) //Loop end
लेकिन ऐसा लगता है कि इस नियम को तोड़ने के लिए चेतावनी को सक्षम करने का कोई तरीका नहीं है।
- 1. G ++
- 2. g ++
- 3. g ++
- 4. g ++
- 5. g ++ 4.1.2
- 6. मैं g ++
- 7. मेकफ़ाइल (g ++)
- 8. मैं g ++
- 9. g ++ यूनिकोड चर नाम
- 10. g ++ __FUNCTION__ समय बदलना
- 11. /शो में g ++
- 12. यह कोड g ++
- 13. डंप में g ++
- 14. ग्रहण सीडीटी को g ++
- 15. प्रोग्राम g ++ पथ
- 16. gcc -g: क्या होगा
- 17. g ++ (gcc) या clang (llvm)
- 18. g ++- डबल-> int cast
- 19. "-g" ध्वज "npm install -g <something>" कमांड में क्या करता है?
- 20. क्या/s/g और/\ s +/g के बीच कोई अंतर है?
- 21. सी ++ 11 घड़ियां: g ++ steady_clock :: is_steady == झूठी?
- 22. जीसीसी 4.8: क्या -ऑग imply -g?
- 23. एसवीजी: पथ समूह <g> टैग
- 24. g ++ का उपयोग करके लिंकिंग -lstdC++
- 25. g ++ -Wreorder का क्या मतलब है?
- 26. boost :: date_time, g ++ - 4.7.0, संकलन त्रुटि
- 27. कॉफ़ीस्क्रिप्ट: "str" .replace (//g, "") क्यों coffeescript संकलन त्रुटि देता है?
- 28. सी ++ 0x "हैलो समवर्ती दुनिया" तुरंत g ++/linux पर segfaults?
- 29. मुझे g ++ से प्रोटोटाइप चेतावनियां कैसे याद आती हैं?
- 30. पॉइंटफ्री शैली में लिखना f x = g x x
नियम हमेशा "सक्षम" होते हैं। केवल चेतावनी जो आपको बताती है कि जब आप उन्हें तोड़ रहे हैं तो वैकल्पिक है। –