95

static constとはどう違いconstますか?例えば:

static const int a=5;
const int i=5;

それらの間に違いはありますか?いつどちらを使用しますか?

4

4 に答える 4

121

static関数の外側の可視性または内側の変数の寿命を決定します。constしたがって、それ自体には何の関係もありません。

const初期化後に値を変更していないことを意味します。

static関数内とは、関数が実行される前後に変数が存在することを意味します。

static関数の外側は、マークされたシンボルのスコープがstaticその .c ファイルに限定され、その外側では見ることができないことを意味します。

技術的には (これを調べたい場合)、staticはストレージ指定子でconstあり、型修飾子です。

于 2012-11-01T21:32:06.077 に答える
68

違うのはつなぎ方です。

// At file scope
static const int a=5;  // internal linkage
const int i=5;         // external linkage

オブジェクトが定義されている翻訳単位の外で使用されない場合はi、指定子を使用して宣言する必要がありstaticます。

これにより、コンパイラは (潜在的に) さらなる最適化を実行できるようになり、オブジェクトが翻訳単位の外で使用されていないことがリーダーに通知されます。

于 2012-11-01T21:32:24.297 に答える