繁体   English   中英

结构成员访问错误

[英]structure member accessing error

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>

typedef struct {
int tos;
char stackarr[];
}STACK;

STACK paren;
paren.tos = -1;

void push()
{
paren.tos++;
paren.stackarr[tos] = '(';
}

这给了我以下错误:

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
paren.tos = -1;
     ^
In function ‘push’:
error: ‘tos’ undeclared (first use in this function)

我是初学者,不知道为什么我会收到这个错误。 有任何想法吗?

您不能在函数外执行赋值; 只允许初始化演示 ):

STACK paren = {.tos = -1};

有了这个部分,你的方法就不会起作用了:灵活的成员,即struct末尾的char stackarr[] ,不能在静态分配的空间中工作; 你需要使用动态分配。 有关如何使用灵活结构成员的说明,请参阅此问答

或者,您可以将最大数量的元素预分配给stackarr ,即

typedef struct {
    int tos;
    char stackarr[MAX_STACK];
} STACK;
STACK paren = {.tos = -1};

这种方法的明显局限性是堆栈不能超过其预分配限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM