【发布时间】:2018-05-05 09:32:25
【问题描述】:
当我以下面的形式初始化结构时出现错误
static struct A* a = &apple->queue[queue_number];
static struct B* b = &banana->queue_a[queue_number];
我遇到错误
Error: #28: expression must have a constant value
我想将指针 a 和 b 保持为静态,以便它的范围保持在同一个文件中。 请在这里帮忙
【问题讨论】:
-
让我猜猜:变量
a和b是全局变量吗?那些需要初始化为编译时常量,你不能为此使用运行时变量。请创建一个Minimal, Complete, and Verifiable Example,这样我们就不必猜测了。 -
它必须是一个常数值。这意味着编译时间常数。如果没有看到更多代码,就不可能建议您可以做什么。
-
&apple->queue[queue_number]在编译时是否已知?只有这样它才能用于初始化静态和/或全局变量。 -
@alk,在 C 语言中,AFAIR 至少需要
queue_number成为#define- 静态const不会在这里做... -
@FelixPalmen:很公平......“在编译时知道”这个词也是模棱两可的。 :-/