gpt4 book ai didi

c++ - 在函数中使用 const int size 参数创建数组会在 Visual Studio C++ 中引发错误 : expression did not evaluate to a constant

转载 作者:行者123 更新时间:2023-12-02 07:59:43 25 4
gpt4 key购买 nike

void foo(const int size) {
char array[size];
}
int main() { }

上述代码在 Visual Studio C++ 中引发编译器错误:

error C2131: expression did not evaluate to a constant
note: failure was caused by a read of a variable outside its lifetime

为什么 size 没有被计算为常量,即使它被声明为 const int
但以下代码编译成功:

int main() {
const int size{ 10 };
char array[size];
}

最佳答案

这可以编译,因为大小确实是恒定的。

int main() {
const int size{ 10 };
char array[size];
}

但是这不会编译,因为 size 是一个常量变量,而不是编译时常量(有细微的差别)

void foo(const int size) {
char array[size];
}

它不起作用的原因是因为我可以使用不同的参数调用 foo 。

foo(10);
foo(42);
foo(1);

最简单的解决方法是使用 std::vector,这就是您想要做的......

void foo(const int size) {
std::vector<char> array(size);
}

现在“array”将与原始代码具有相同的意图。

关于c++ - 在函数中使用 const int size 参数创建数组会在 Visual Studio C++ 中引发错误 : expression did not evaluate to a constant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60163173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com