“.”之前应有“=”、“,”、“;”、“asm”或“__attribute__”代币

问题描述 投票:0回答:3

我正在实现一个队列,我想在其中全局初始化

Q.front = Q.rear = Any value

#include <stdio.h>
#include <stdlib.h>
struct Queue
{
    int front, rear;
    int queue[10] ;
};
struct Queue Q;
Q.front = 0;
Q.rear = 0;

int main()
{
    return 0;
}

但我收到此错误:

expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

enter image description here

c queue
3个回答
17
投票

Q.front = 0;
不是一个简单的初始化器,它是可执行代码;它不能发生在函数之外。 为
Q
使用正确的初始化器。

struct Queue Q = {0, 0};

或使用命名初始化语法(并非在所有编译器中可用,目前仅在 C 中可用):

struct Queue Q = {.front = 0, .rear = 0};

5
投票

您无法在全局范围内使用

Q.front = 0; Q.rear = 0;
初始化变量。在您的案例中,这些陈述应该位于
main
内。


2
投票

正如 @Naveen 所说,您不能分配给全局范围内的结构成员。根据 C 的版本,你可以这样做:

struct Queue q = {0,0};

struct Queue q = {.front = 0, .rear = 0 };
© www.soinside.com 2019 - 2024. All rights reserved.