C和C的不兼容之处1const

C和C的不兼容之处1const

C和C++都有一个重要的概念,叫做constantexpression,特点是可以在编译时就得到值,而不需要运行时。有些语法要求只能使用constantexpression,比如数组的大小,case语句的表达式,等等。

那末,const变量是不是可以用作constantexpression呢?答案在C和C++中其实不一样,比如下面这段代码,假定是某函数内部的一部分:

constintN=;intarr[N];在C++中,这段代码是合法的,由于N可以当作常量一样使用。(在C++11中,这里还可以用constexpr)。但在C89中,这段代码是非法的,由于即便变量声明为const,它依然不被看作constantexpression。但可能有人会问,我试过这段代码,可以编译的啊。那是由于,C99中支持可变数组(variablelengtharray,常常缩写为VAL),arr这里被解析为一个VAL,所以虽然这段代码在C99中变成合法的,但arr依然不是一个普通的数组,由于N依然不是constantexpression.

来自









































合肥治疗白癜风最好的专科医院
白癜风照片



转载请注明:http://www.nydjfy.com/xxzl/xxzl/737.html

  • 上一篇文章:
  •   
  • 下一篇文章: