解决头文件定义变量的问题,巧用宏定义(续)

本文介绍了解决Xcode调试过程中出现的符号重复问题的方法。通过在其中一个.c文件中定义变量,其余文件中使用extern关键字声明,利用宏定义实现了这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继昨天遇到的头文件定义变量问题,总得要想办法解决啊,不然xcode没法调试啊~~

改还得要从头文件改起,想到符号重复问题是因为多个.c都包含了这个头文件,都定义了一次,所以链接就不知道要哪一个了啊,常见的解决办法不就是加extern呗。但是这个工程师所有的都是包含的一个“万能”头文件,所以要是加了extern不就没定义了么?说到这儿可能有人已经想到解决办法了,没错,就是让其中一个包含这个头文件的.c文件来定义,其他的所有.c文件都是extern的声明就好了,所以必然要用宏了呗

#ifdef   XXX

XXX

#else

extern XXX

#endif

答题就是如此了,在其中一个.c文件中#define XXX就好了,千万不能再工程中定义这个宏,否则所有的.c文件就都有这个宏定义了。

但是总不可能让我吧所有的变量都加上exter吧,好累哦,想到一个好办法,还是只有用宏

#define int extern int

#define short extern short


XXXXX


#undef int

#undef short

这样就好了,记住后面一定要有#undef 不然不就乱套了。看来有时候宏定义真是个好东西。

终于可以愉快地研究算法了,呵呵!

最后附上一张调试成功的图吧:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值