【问题标题】:dereferencing pointer to incomplete type in structures取消引用指向结构中不完整类型的指针
【发布时间】:2013-07-24 15:12:08
【问题描述】:

我浏览了有关此的其他帖子,但没有像我的问题那样。 我正在尝试从一个文件(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;
                                }
                                }
%%

错误是取消引用指向不完整类型的指针。

谁能告诉我这里有什么问题。谢谢。

【问题讨论】:

  • 我也尝试像下面那样定义我的 stuct *head1 但仍然遇到相同的错误。结构节点 *head1 { 字符字[50];结构节点*下一个; };

标签: pointers structure lex extern


【解决方案1】:

除非struct node 的定义出现在 中,否则编译器将不知道它有哪些成员。您应该将定义移动到头文件中,然后将其包含在两个 lex 文件中。

【讨论】:

  • 谢谢。所以你的意思是定义必须在两个文件中?我必须访问保存在 1.l 的 head1 中的东西。我可以吗?
  • 我定义了结构节点定义并将其放在头文件中,然后尝试。它说,对“head1”的未定义引用。请帮忙。
  • 我通过在头文件中而不是在 1.l 中声明 head 和 head1 来修复它。谢谢@DreW。
  • 你用extern声明了吗?如果没有,您稍后会遇到链接错误
  • 我没有在头文件中将其声明为 extern。我一定要吗?我确实在我的 1.l 和 2.l 中将其声明为 extern。谢谢
猜你喜欢
  • 2021-07-25
  • 2017-02-24
  • 2013-12-22
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 2013-03-11
相关资源
最近更新 更多