请教typedef struct A A;用法的含义

2019-12-11 18:31发布

最近在学习sqlite3,其中有一个sqlite3_stmt结构,找不到定义的地方。
只能找到 typedef struct sqlite3_stmt sqlite3_stmt; 这样的语句。
自己定义自己,实在看不懂它的作用,请教论坛大神指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
takashiki
2019-12-12 16:15
lcw_swust 发表于 2018-5-21 14:52
我也觉得奇怪,随便试了下居然编译通过,但是结构体本身并未定义。


哦,原来你们说的是这个啊。这个是C语言的不完整类型,只要你不实际用到它,它就不会报错。大致类似于这样:
extern int var;            // 声明变量,这个var变量在任何地方都没有定义过
只要你不实际操作这个类型(分配空间)是不会报错的。你说可以定义指针变量?大概也对应于这样,一样不会出错:
int sz = sizeof(var);

或者简单的说,你直接声明
struct A;
再编译,同样是不会报错的。只是类型struct A是不完整的类型,无法用来定义变量。typedef只是取个别名,没有其他含义。

一周热门 更多>