Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
int main ( ) { int a = 1 ; static int b = a ; }
このコードでは、gcc 4.3.2でエラーが発生します。
エラー : 初期化要素が定数ではありません。
しかし、g++ 4.3.2 では問題なく動作します。g++ 4.3.2 でエラーが発生しない理由を誰か説明してください。
C++ で有効なため (C では有効でないため)。
(C++11、6.7p4) 「該当する場合、静的ストレージ期間を持つブロック スコープ エンティティの定数初期化 (3.6.2) は、そのブロックが最初に入力される前に実行されます。[...] それ以外の場合、そのような変数は最初にコントロールがその宣言を通過するときに初期化されます。そのような変数は、初期化の完了時に初期化されたと見なされます。」