常量声明 - 语言差异?

时间:2013-03-13 16:02:08

标签: c++ c

以下代码片段在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 ++差异?

1 个答案:

答案 0 :(得分:7)

基本上,C中的const变量不被视为编译时常量。因此,需要编译时常量的位置const个变量中获取它们的值。