2013-07-24 2 views
1

Я просмотрел другие сообщения об этом, но ничего подобного моей проблеме. Я пытаюсь получить доступ к структуре из одного файла (1.l). Ниже показано мое объявление и определение моей структуры в файле 1.l.Указатель разыменования на неполный тип в структурах

< 1.L>

struct node 
{ 
char words[50]; 
struct node *next; 
}; 

struct node *head = NULL; 
struct node *head1 = NULL; 

файл, из которого я пытаюсь получить доступ в 2.l. 2.l показано ниже.

%{ 

#include "y.tab.h" 
extern struct node *head1; 

%} 

%x SECTION 

%% 

"#pragma omp section" { BEGIN SECTION; yyless(0); } 

<SECTION>"#pragma omp section" { 
           fprintf(yyout,"meta_fork"); 
           while(head1 != NULL) 
           { 
    \\error in this line   fprintf(yyout,"shared(%s)",head1->words); 
    \\error in this line   head1 = head1->next; 
           } 
           } 
%% 

Ошибка является указателем разыменования неполного типа.

Может кто-нибудь, пожалуйста, скажите мне, в чем проблема здесь. Благодарю.

+0

Я также попытался определить мой stuct * head1, как показано ниже, но все еще получаю ту же ошибку. struct node * head1 { char words [50]; struct node * next; }; – Sunny

ответ

1

Если определение struct node не указано в < 2.l>, компилятор не будет знать, какие у него есть члены. Вы должны перенести определение в файл заголовка, а затем включить его в оба файла lex.

+0

Спасибо. Значит, вы имеете в виду, что определение должно быть в обоих файлах? Мне нужно получить доступ к вещам, которые были сохранены в head1 из 1.l. Могу ли я это сделать? – Sunny

+0

В принципе, да. –

+0

Я определил определение узла структуры и поместил его в файл заголовка, а затем попробовал. Он говорит, неопределенная ссылка на 'head1 '. Пожалуйста помоги. – Sunny