カスタマーサポートセンター

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