2012-04-25 15 views
18

enter image description here Nie można tego rozwiązać .. Wprowadzam kolejkę. Po napisaniu kompletny kod miałem błąd wymienione poniżej:oczekiwano '=', ',', ';', 'asm' lub '__attribute__' przed '.' token

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

Potem napisałem prosty program, ale sam problem nie ustąpi. Nie mogłem zrozumieć, jak rozwiązać ten problem. Rozglądałem się za wieloma rozwiązaniami w stackoverflow.com and google.com, ale nadal nie mogłem tego rozwiązać. Proszę o pomoc.

Chciałbym 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

wielkie dzięki chłopaki .. Dostałem odpowiedź. To jak lekcje dla mnie. Tak czy inaczej jesteście najlepsi. –

Odpowiedz

12

Q.front = 0; nie jest prostym inicjatorem, jest to kod wykonywalny; nie może wystąpić poza funkcją. Użyj odpowiedniego inicjalizatora dla Q.

struct Queue Q = {0, 0}; 

lub ze składnią imieniem inicjatora (nie jest dostępny we wszystkich kompilatorów, i jak dotąd tylko w C):

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

Ya, rozumiem tę koncepcję. Dzięki za to wiele –

+0

Dzięki To pomogło mi – achoora

5

Nie można zainicjować zmienną używając Q.front = 0; Q.rear = 0; w zakresie globalnym. Te oświadczenia powinny znajdować się w twojej sprawie pod numerem main.

3

Jak @Naveen powiedział, że nie można przypisać do członka struct że jest w zasięgu globalnym. W zależności od wersji C, choć można to zrobić:

struct Queue q = {0,0}; 

lub

struct Queue q = {.front = 0, .rear = 0 }; 
Powiązane problemy