2012-04-25 68 views
18

enter image description here无法解决此问题.. 我正在实施队列。编写完整的代码后我有下列错误:'''''',';','asm'或'__attribute__'在''之前。代币

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

然后我写了一个简单的程序,但同样的问题仍然存在。无法理解如何解决这个问题。我已经在很多方面研究了stackoverflow.com and google.com的解决方案,但仍无法解决此问题。请帮助。

我想initialize globallyQ.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; 
} 
+0

非常感谢球员。我得到了答案。这就像我吸取的教训。无论如何,你们是最棒的。 – 2012-04-25 07:20:20

回答

12

Q.front = 0;不是一个简单的初始值设定项,它是可执行的代码;它不能发生在函数之外。使用适当的初始化程序Q

struct Queue Q = {0, 0}; 

或命名初始化语法(在所有的编译器只在C不可用,并且尚未):

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

雅,我理解这个概念。谢谢拍卖 – 2012-04-25 07:20:50

+0

谢谢它帮助我 – achoora 2016-07-14 12:27:50

5

您可以在全球范围内使用Q.front = 0; Q.rear = 0;没有初始化的变量。这些陈述应该在main之内。

3

正如@Naveen说你不能分配到结构的成员是在全球范围内。根据C的版本,但你可以这样做:

struct Queue q = {0,0}; 

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