C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) Win10 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)GCC 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) 问题(Question): 想请教一个专案遇到编译错误的问题: 有三个文件 a.h 定义一个结构 typedef struct person 定义一个巨集 define macro1 b.h 定义一个结构 typedef struct person 定义一个巨集 define macro2 main.c 必须用到macro1和macro2 所以include a.h和b.h 这时候编译会遇到struct redefinition error 但是a.h和b.h都是别人写好的,内容不能改 想请问这样要怎麽解决?谢谢 喂入的资料(Input): 预期的正确结果(Expected Output): 错误结果(Wrong Output): 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档) 补充说明(Supplement): ---- Sent from BePTT on my Samsung SM-S9480 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.228.124.9 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1774632623.A.3AB.html ※ 编辑: komododo (36.228.124.9 台湾), 03/28/2026 01:33:10
1F:→ hongsiangfu: 拆成两个.c各自参考不同的macro避免命名冲突(非专业03/28 07:32
2F:推 Lipraxde: macro copy 出来用03/28 08:52
3F:推 LPH66: 如果能找得到 a.h 跟 b.h 的作者, 去找他(们)改03/28 09:24
4F:推 LPH66: 以这两个都有 struct person 来看它们应该是同一或相关系统03/28 09:26
5F:→ LPH66: 的标头档, 应该会有不小机会是同一作者03/28 09:26
6F:→ LPH66: 那就把你遇到的这个状况跟那个作者说请他改03/28 09:27
1. 不好拆成两个.c,main.c include a.h和b.h,但typedef struct person是定义在a.h和 b.h里又include好几层的某一个c.h里面 2. a.h 和b.h 里面main.c要用到的macro和struct太多,copy不太合适 3. a.h和b.h我都没权限改QQ 感谢回覆~ ※ 编辑: komododo (36.228.124.9 台湾), 03/28/2026 10:46:17
7F:→ hongsiangfu: 会同时使用吗? 不会的话用#if遮蔽其中一方程序03/28 11:45
typedef struct person不会同时使用,只会用到b.h定义的,但是a.h和b.h都有其他要用到 的struct 和macro,必须同时引用
8F:→ Lipraxde: 那只能改用 C++ 用 namespace 包起来了 (x03/28 13:00
※ 编辑: komododo (36.228.124.9 台湾), 03/28/2026 18:17:15
9F:推 johnjohnlin: typedef成不同pointer/pimpl03/28 21:29
10F:推 akasan: #define person person_a03/29 00:13
11F:→ akasan: #include "a.h"03/29 00:13
12F:→ akasan: #undef person03/29 00:13
13F:→ akasan: #include "b.h"03/29 00:13
14F:推 wulouise: 自订另一个opaque type实作放在别的source,所有function03/29 14:53
15F:→ wulouise: 自己包03/29 14:53
16F:推 LPH66: > 都没权限改: 所以我才说去找原作者叫他改04/01 21:42
17F:→ LPH66: 去找原作者把你的冲突问题跟他说要他改04/01 21:42
18F:→ LPH66: 如果这两个真的是同一系列东西里的两个地方的标头档04/01 21:44
19F:→ LPH66: 你不会是第一个也不会是最後一个把两个放在一起用的人04/01 21:44
20F:→ LPH66: 光这一点你就有理由去叫原作者改了04/01 21:44
感谢回答! ※ 编辑: komododo (36.228.69.213 台湾), 04/02/2026 00:05:15







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP