为什么不能将静态结构指针初始化为变量的地址

时间:2018-05-05 09:32:25

标签: c pointers static

当我以下面的形式初始化结构时,我收到错误

chmod 755 /etc/mysql/mysql.conf.d

我收到错误

static struct A* a = &apple->queue[queue_number];
static struct B* b = &banana->queue_a[queue_number];

我想将指针a和b保持为静态,以便它的范围保留在同一个文件中。 请帮忙

1 个答案:

答案 0 :(得分:1)

因为static属于constants类型,应使用&apple->queue[queue_number]初始化,或者使用编译时已知的变量值(在您的情况下为a)进行初始化时间不在运行时。 从C标准

  

具有静态的对象的初始值设定项中的所有表达式   或线程存储持续时间应为常量表达式或字符串   文字。

我想将指针a和b保持为静态?一种方法是使用NULL初始化static struct A *a = NULL; if(a == NULL) { /* point to remember when a become NULL it initialize again a */ a = &apple->queue[queue_number]; /*initialize expected value here */ } &测试它。

mergeParts(lowerIndex, middle, higherIndex);

您可能想阅读此Error "initializer element is not constant" when trying to initialize variable with const