2024
0130
typedef struct の除去
これからヘッダーを小分けにしていくのに、 前方宣言を使いたいのだけどその時に typedef に配慮が必要です。
unknown: html => {"type":"html","value":"<!-- truncate -->","position":{"start":{"line":5,"column":1,"offset":59},"end":{"line":5,"column":18,"offset":76}}}
typedef struct NodeTag
{
const char *name;
struct NodeTag *next; // 👈
} Node;
// 前方宣言
struct Node; // これはだめ
struct NodeTag; // こっちが必要
// ならば同名にすれば?
typedef struct Node
{
const char *name;
struct Node *next; // 👈
} Node;
// 前方宣言
struct Node;
// 参照するときに struct が要る
void addLink(struct Node* node, struct Node* next);struct Node
{
const char *name;
Node *next;
};
// 前方宣言
struct Node; // OK
// 楽
void addLink(Node* node, Node* next);なので struct の typedef を削除します。 ほぼ単純作業です。
ついでにポインタ型typedefもやめる
typedef struct _Str {
char *ptr;
int length;
int area_size;
} *Str;わずかに記述量を節約できるのだけど、 前方宣言で疎結合に変えるときに引っかかるのでやめます。
Str a, b; // ささる注意2024
0131