2013-03-13 81 views
2

下面的代码片断是下完全有效++(至少被编译):常量声明 - 语言差异?

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 vs C++差异?

+0

您的编译器已经完成了这项工作。发布结果,所以我们不必再次完成这项工作。 – nvoigt 2013-03-13 16:04:36

+1

@AlokSave,这个问题比你链接的问题简单得多,而且更容易理解。我建议保留它。 – 2013-03-13 16:07:00

+0

@MarkRansom:但它是重复的。标有重复的答案正是在这里问及更多。 *更简单,更容易*理解与它有什么关系?如果可以的话,可以进行重复标记的反向标记,但我认为它不会对其他问题的内容做任何公正的处理。 – 2013-03-13 16:09:41

回答

7

基本上,const C中的变量不被视为编译时常量。需要编译时常量的地方可以这样而不是const变量中获得它们的值。

+0

谢谢!考虑到我得到的编译错误,这是非常有意义的。 – klement 2013-03-13 16:05:45