g ++で厳密なエイリアシング警告を有効にする正しい方法は何ですか? VC++ 10はこれらのルールを実装していますか?g ++の厳密なエイリアシング警告を有効にする
6
A
答えて
4
g++
に-fstrict-aliasing
を使用してください。私も-Wstrict-aliasing=2
を使用して、厳密なエイリアシング規則の違反の可能性に関する警告を参照してください。
3
-O2
によっていくつかの最適化を行う必要があるため、自動的に有効になります。間違いなく、バグの可能性があるコードを構築していないことを確認するために警告(-Wall
)を組み合わせてください。そうでない場合は、-fstrict-aliasing
を別の回答のように使用して有効にすることができます。
ただし、VC++ 10についてはわかりませんが、
1
VC++ 10は、/ O1以上の厳密なエイリアシング規則を有効にします。私はhereの「強大なエイリアシングルールの恩恵」章のテストプログラム(カウント値6)を使用します。そして、asmコードに従ってください。あなたは、bの負荷が1回だけ行われることが分かります。
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. STM32 SPIのハードウェアと厳密なエイリアシングの警告
- 2. c - 厳密なエイリアシング警告の処理方法
- 3. 厳密なエイリアシングのパフォーマンス上のメリット
- 4. 厳密なエイリアシング違反ですか?
- 5. 厳密なエイリアシング規則違反
- 6. 厳密なエイリアシング例外説明
- 7. 警告!逆参照型のペーンドポインタは厳密なエイリアシング規則を破棄します[-Wstrict-aliasing]
- 8. コンパイル時に「厳密なエイリアシング」を検出する方法は?
- 9. クライアント秘密鍵の有効期限に関する警告
- 10. Visual C++は "厳密なエイリアシング"をサポートしていますか?
- 11. 厳密なエイリアシングとstd :: arrayとCスタイルの配列
- 12. グローバルな警告を有効にする
- 13. vscodeの厳密なヌルチェックを有効にする方法
- 14. - 関数定義内の厳密なオーバーフロー警告
- 15. 厳密なエイリアシングは矛盾しているようです
- 16. 厳密なトランスポートセキュリティを有効にするmvc
- 17. 厳密なエイリアシング規則でこれはいいですか?
- 18. 厳格aliasling警告
- 19. 浮動小数点ビットと厳密なエイリアシング
- 20. g ++で特定の警告を無効にする方法
- 21. このコードは厳密なエイリアシング規則に違反していますか?
- 22. このポインタキャストは厳密なエイリアシング規則を破棄しますか?
- 23. -g ++のWsign-compare警告
- 24. キャストペアのg ++警告オプション?
- 25. Dokeos警告:厳格な基準
- 26. xcodeで警告を無効にして有効にする
- 27. PHPの厳密な標準を無効にする5.3.8
- 28. PhpStorm 2016.2.1の厳密なコードチェックを無効にする方法
- 29. Chromeの厳密なMIMEタイプチェックを無効にする
- 30. 厳密なMySqlを無効にするには?
ルールは常に「有効」です。あなたがそれらを壊しているときにあなたに伝える警告だけがオプションです。 –