FAQ~よくある質問~ | FAQマスタ詳細表示
FAQ詳細情報
ID | 10810998 |
---|---|
FAQカテゴリ(大) | コンパイラ |
最終更新日 | 2016-05-12 |
質問内容
コンパイラの最適化設定の「なし」と「低」の違い
回答内容
「なし」(デバッグサポートに最適): 変数は、そのスコープ全体を通して有効です
「低」:「なし」と同じですが、変数は必要時のみ有効となり、スコープ全体を通して有効とは限りません。
これは、以下のような構文で、
int func(void)
{
int a, b, c;
a = 3;
c = a;
b = 4;
c = c + b;
return c;
}
「なし」では変数は常に有効ですが、「低」の場合、下記のように書き換えられる場合があり、プログラムカウンタの位置により無効になる場合があります。
int func(void)
{
int x, c;
x = 3; | デバッガ上 x は aに見えるが、
c = x; | この位置から、bは見えない
--------------
x = 4; | ここからは a は見えなくなる。
c = c + x; |
return c;
}
参考資料URL
- 登録されているURLはありません。