gpt4 book ai didi

c - 在文件范围内可变地修改了 'stack'

转载 作者:行者123 更新时间:2023-11-30 16:15:56 26 4
gpt4 key购买 nike

int const a=9;
int stack[a];
int main()
{
return 0;
}

上面的代码给出了一个错误:在文件范围内可变地修改了“stack”

但是当我将代码更改为:

#define b 3
int stack[b];
int main()
{
return 0;
}

它编译时没有错误。虽然 #define 和 const 变量都用于定义常量标识符,但是为什么当我使用 const var 而不是 #define 时会出现错误。我搜索了类似的问题,但他们都给出了有关错误但没有原因。

搜索了一下const和#define,发现有时gcc编译器会将const识别为只读,但这太困惑了。

最佳答案

在 C 语言中,静态存储变量的大小可以由常量表达式定义。使用变量(甚至常量)作为大小不是这样的表达式。

该错误 100% 正确。

第二种情况:处理器将文本中的b替换为常量表达式3

常量表达式是在编译期间计算的内容。变量值只能在运行时计算。

关于c - 在文件范围内可变地修改了 'stack',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56912619/

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