你好,我遇到了一个问题。
这是我的头文件,包含结构定义和方法原型。

typedef struct SymbolTable
{
     ...some elements
}ST;

extern struct ST STable;
void Symbol_Put(ST *S, char* sym);

在我的c程序中,我使用:
#include "myheader.h"
struct ST STable;

在方法中,我使用头文件中的方法。
...body of the method...
int id = Symbol_Put(STable,sym_name);

不幸的是,我得到了这个错误:
‘STable’ has an incomplete type
  int s = Symbol_Put(STable,sym_name)

我不明白怎么了。如果你能指点我的错误所在,我将不胜感激。谢谢!

最佳答案

您的代码中没有struct ST。只有struct SymbolTableST
将声明更改为

extern ST STable;

以及对
ST STable;

Symbol_Put需要一个指针作为第一个参数,但要传递一个ST。将调用替换为
int id = Symbol_Put(&STable,sym_name);

关于c - 使用结构时C中的不完整类型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34569060/

10-11 23:59