繁体   English   中英

C99和C11中的const关键字和常量表达式

[英]const keyword and constant expressions in C99 and C11

我们实际上可以在C99和C11中使用const关键字来构建这样的常量表达式吗? 有什么标准说呢?

const int n = 5;

int main()
{
   int arr[n];
}

在C89 / C90中,我们不能。

不,C中的const从不表示常量,而是表示仅准备就绪。

C90 / C99 / C11相同。

请注意,在您的示例中,您使用的是可变长度数组。 VLA已在C99中引入,并且VLA的大小不必为常数表达式,但n仍不是常数表达式。

不, const不会像C ++中那样使常量。

另一方面,C99确实添加了可变长度数组(VLA),因此对于auto存储类,大小不必为常数。 这使您可以执行以下操作:

int f(int n) { 
    int array[n];
    // ...
}

因此,您无法完全满足您的要求,但是您可以在许多 (也许大多数)情况下都可以做得差不多。

在C语言中,您可能会使用宏来定义常量的值。

以下是我的意思的示例。

#define N 5

int main() {
    int array[N];
    // ...
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM