gpt4 book ai didi

c - 错误: Initializer Element is not constant (c language)

转载 作者:行者123 更新时间:2023-11-30 18:39:17 26 4
gpt4 key购买 nike

这是一个用于存储公式的 .h 文件,但它给了我您在第 16 行标题(字符串下方)中看到的错误。我是一个初学者,错误说不是恒定的,所以我想把“const”放在“float”之前,但无论如何它都不起作用。

#ifndef FORMULAS_H_INCLUDED
#define FORMULAS_H_INCLUDED

float a;
float Pi=3.1415926536;
float r;
float b;
float c;
float h;




char formula_volume_cube[100] = "Formula for the Volume of a Cube: V=a*a*a";
const float volume_cube=(a*a*a);



#endif // FORMULAS_H_INCLUDED

任何帮助将不胜感激。感谢您抽出时间。

最佳答案

C 中的全局变量只能使用编译时常量表达式进行初始化,这是一类非常狭窄的表达式。它本质上只包含文字或涉及文字的表达式:

float a1 = 1.5;                   // OK
const float a2 = 2.5 * 10 / 300; // Also OK

标识另一个全局变量的表达式不是编译时常量表达式:

// float a3 = a2;                 // Error!

C 的表达能力对此还不够。这都是为了简单起见。例如,C 不区分 const float b1 = 2.5;extern const float b2;。变量 b1 并不比 b2 更常量”,但编译器只知道 b1 的值,而 b2 的值是未知的——它只能由不同的翻译单元设置,并且没有任何顺序。因此,没有办法使一个常数比另一个常数“更恒定”。 C 中的简单解决方案是没有 id-expression 可以用作编译时常量。

(相比之下,C++ 允许全局变量具有动态初始值设定项。如果一个全局变量的初始值设定项依赖于另一个全局变量,这会引入一整套排序问题。C 没有这些问题。)

关于c - 错误: Initializer Element is not constant (c language),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494894/

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