You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言链表开发中自定义结构体指针typedef编译报错问题

报错成因

你定义的头文件保护宏和typedef的类型别名重名了:

  • 头文件开头的#define linkedList会触发预处理器的替换逻辑,在编译预处理阶段,把整个头文件里所有linkedList字符串都替换为空值
  • 当处理到typedef listStringNode *linkedList;这行时,代码会被预处理为typedef listStringNode * ;,缺少了要定义的类型别名标识符,因此触发编译错误。
修复方案

修改头文件保护宏为不会和代码中其他标识符冲突的名称即可,业内通常使用全大写+下划线+_H后缀的格式命名头文件保护宏,避免和小写/驼峰命名的变量、类型别名重名。

修改后的linkedList.h参考代码:

#ifndef LINKED_LIST_H
#define LINKED_LIST_H

typedef struct listStrNode {
    char *string;
    struct listStrNode *next;
} listStringNode;

typedef listStringNode *linkedList;

#endif

修改后使用原编译指令gcc main.c即可正常编译通过。

内容的提问来源于stack exchange,提问作者Gabe Koleszar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 16:09:03