2

次のコードスニペットは、C ++で完全に有効です(少なくともコンパイルされます)。

my_file.cxx:

static const int MY_CONST_ONE = 1;
static const int MY_CONST_TWO = MY_CONST_ONE;

一方、Cでまったく同じコードをコンパイルすると、エラーメッセージ(http://ideone.com/erBkm9)が表示されて失敗します。

my_file.c:2:1: error: initializer element is not constant

my_file.c:

static const int MY_CONST_ONE = 1;
static const int MY_CONST_TWO = MY_CONST_ONE;

理由は何ですか?それはコンパイラ固有のものですか、それとも既知のCとC ++の違いですか?

4

1 に答える 1

7

基本的に、constCの変数はコンパイル時定数とは見なされません。したがって、コンパイル時定数が必要な場所では、変数から値を取得できませconstん。

于 2013-03-13T16:03:05.730 に答える