无法在头文件中分配struct变量

Maj*_*imi 3 c struct header-files cc

我有一个头文件,包括这样的结构:

typedef struct
{
    int index = -1;
    stack_node *head;
} stack;
Run Code Online (Sandbox Code Playgroud)

但是当使用cc进行编译时,它会在赋值行(int index = -1)处显示错误:

error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
Run Code Online (Sandbox Code Playgroud)

我应该添加初始化函数来初始化变量吗?

mou*_*iel 5

您提供的不是变量声明,而是类型定义.您不能将默认值分配给typedef中的struct字段.

如果要为结构变量分配初始值,则应尝试:

stack myStack = { .index = 1 };
Run Code Online (Sandbox Code Playgroud)

这适用于C99.