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

2019-12-11 18:31发布

最近在学习sqlite3,其中有一个sqlite3_stmt结构,找不到定义的地方。
只能找到 typedef struct sqlite3_stmt sqlite3_stmt; 这样的语句。
自己定义自己,实在看不懂它的作用,请教论坛大神指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
lcw_swust
1楼-- · 2019-12-12 13:58
 精彩回答 2  元偷偷看……
takashiki
2楼-- · 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只是取个别名,没有其他含义。
laujc
3楼-- · 2019-12-12 19:27
lcw_swust 发表于 2018-5-21 14:52
我也觉得奇怪,随便试了下居然编译通过,但是结构体本身并未定义。

试试引用一下。

没有使用到的东西,有可能编译器根本就没有去管他
lcw_swust
4楼-- · 2019-12-12 22:38
takashiki 发表于 2018-5-21 15:11
哦,原来你们说的是这个啊。这个是C语言的不完整类型,只要你不实际用到它,它就不会报错。大致类似于这 ...

这样啊,
看来,楼主需要把有疑问的代码注释掉试试看
728196
5楼-- · 2019-12-13 03:36
tpyedef 啊 大哥们,不是定义,就是重起个名字而已,和define 一个效果。
Gorgon_Meducer
6楼-- · 2019-12-13 05:42
 精彩回答 2  元偷偷看……

一周热门 更多>