【发布时间】:2021-12-17 11:41:43
【问题描述】:
我一直在尝试使用在包含的 .h 文件中声明并在关联的 .c 文件中定义的外部常量来创建静态常量。但是编译器抱怨初始化元素不是常量,就好像 extern 使常量无效。所以我想知道是否有办法在其他 const 的定义中使用这些 extern const 而不会出现此错误。
代码如下:
consts.c
const float G = 6.67408E-11;
const int metre = 10;
const int window_width = 500;
const int window_height = 500;
const float seconds_per_frame = 1.0f/60.0f;
const float frames_per_second = 60.0f;
consts.h
extern const float G;
extern const int metre;
extern int window_width;
extern const int window_height;
extern const float seconds_per_frame;
extern const float frames_per_second;
粒子.c
#include "../constants/consts.h"
static const float max_position_x = window_width;
static const float max_position_y = window_height; //Errors in these three statements
static const float max_speed = 5 * metre; //"initializer element is not constant"
(...)
在你问之前,我已经与 consts.c 链接,并且可以使用在particle.c 中定义的任何 const 没有问题。它只是试图将它们用于导致错误的常量。
【问题讨论】:
-
非常有帮助,谢谢!。我不知道如何解决我的问题。我想从 consts.h 中定义的那些常量初始化particle.c 中的这些常量。
-
"我一直在尝试使用 extern consts 创建静态 consts" 这没有任何意义,
static和extern几乎是彼此的对立面。这就像说“我想通过将这个项目外包给外部顾问来在内部完成这个项目”。在使用此代码进行任何其他操作之前,您应该研究static和extern。