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.
来自
合肥治疗白癜风最好的专科医院白癜风照片