为什么const int x=5;不是C中的常量表达式? [英] Why is const int x = 5; not a constant expression in C?

查看:27
本文介绍了为什么const int x=5;不是C中的常量表达式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以为C对我来说不会再有惊喜了,但这让我很惊讶。

    const int NUM_FOO = 5;
    ....

    int foo[NUM_FOO];
==>error C2057: expected constant expression

我的C++经验使我在内部尽可能地反对#define。所以这一次真的让人大吃一惊。VS2019,用/TC编译。我以为C99无论如何都允许可变大小的数组。

  1. 谁能解释为什么会发生拒绝,因为编译器在编译时肯定知道数组的大小?

  2. C99不是允许可变大小的数组吗?

推荐答案

  1. const在C中没有声明编译时常量。如果要避免使用#define并希望使用可以出现在调试器中的符号名称,则可以改用enum常量。

  2. C99是否支持VLA。但是,VS2019 does not support C99.

这篇关于为什么const int x=5;不是C中的常量表达式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆