c++ - 如何初始化一个长度等于 const int 方法返回值的数组?

标签 c++ arrays constants size

我想要完成的是:

inline const int size() { return 256; }

int main()
{
    int arr[size()];

    return 0;
}
但是 Visual Studio 在初始化 arr[size()] 时给了我一个错误:

expression must have a constant value


有没有办法在不使用全局变量、宏、std::vector 或在堆上创建 arr[] 的情况下完成我想要的?

最佳答案

放下 inlineconst并添加 constexpr说明符代替,以解决问题:

constexpr int size() { return 256; }
现在您可以将其用作数组大小,例如:
int arr[size()];
在 C++(不是 C)中,必须在编译时知道数组的长度。 const限定符仅表示在程序运行期间不得更改值。
通过使用 constexpr您将指定函数的输出是一个已知常量,甚至在程序执行之前。

关于c++ - 如何初始化一个长度等于 const int 方法返回值的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65685036/

相关文章:

c++ - Cxx-prettyprint(用于标准容器)在命名空间 std 内定义其输出操作符——这是否违反标准?

php - 为什么在命名空间中可以覆盖 true 但不能覆盖 false?

arrays - Excel VBA - 将二维数组的值分配给单元格范围

Java 字符串数组归并排序

java 。输入奇数和偶数时程序崩溃

java - 更改已编译类中的字符串常量

c++ - 为什么有时不需要在 lambda 中捕获 const 变量?

c++ - 如果没有提供管道,读取 std::cin 会挂起

C++ OpenCV imdecode 慢

c++ - 更好地理解 C++ 中的 Singleton 类