我一直都很疑惑,这两种方法到底有什么区别?
有的人喜欢
[C] 纯文本查看 复制代码 typedef struct {
int x;
int y;
} point_t;
有的人喜欢
[C] 纯文本查看 复制代码 typedef struct point point_t;
struct point {
int x;
int y;
};
后来归结于编码习惯,然后我就一直用的typedef struct这种方式。
一直到今天,想写一个结构体包含它自己,结果发现用第一种包含不了,会报错。
[C] 纯文本查看 复制代码 typedef struct
{
...
void (*function)(point_t *dev);
...
} point_t;
但是用第二种方式,前向声明就可以不报错。
[C] 纯文本查看 复制代码 typedef struct point point_t; // 前向声明
struct point
{
...
void (*function)(point_t *dev);
...
};
|