我用C实现struct
:为什么我的结构有一个不完整的定义?
typedef struct {
...
} _p_TSResilOnline;
typedef struct _p_TSResilOnline *TSResilOnline;
后(在同一文件),我使用:
TSResilOnline o = (TSResilOnline)(chk->data);
...
*check = (o->threshold < PetscAbs(sf)) ? PETSC_FALSE : PETSC_TRUE;
但我的编译器回报:
error: incomplete definition of type 'struct _p_TSResilOnline'
*check = (o->threshold < PetscAbs(sf)) ? PETSC_FALSE : PETSC_TRUE; ~^ note: forward declaration of 'struct _p_TSResilOnline' typedef struct _p_TSResilOnline *TSResilOnline;
我想知道什么是不完整的。编译器应该知道一切。
因为你使用结构的实例在'typedef',该结构的不类型。尝试'struct _p_TSResilOnline {...};' –
'struct {...} _p_TSResilOnline'定义了一个未命名(无标记)结构类型的变量。给结构定义添加一个标签。 –
不要'typedef'指针!这最终会导致混乱和缺陷。 – Olaf