打印

关于extern宏定义为INPUT_EXT,请问这段程序为什么这么写?

[复制链接]
1829|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dianzilc|  楼主 | 2015-1-23 12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dianzilc 于 2015-1-23 12:55 编辑

在cpu.h的有这么一段:
#ifdef         CPUGLOBALS
#define        CPU_EXT
#else
#define        CPU_EXT    extern
#endif
在cpu.c中有宏定义:
#define          CPUGLOBALS
请问这样写有什么好处吗,为什么不直接用extern,而要宏定义?

相关帖子

沙发
lxyppc| | 2015-1-23 13:01 | 只看该作者
单独看没有任何意义
要根据你自己工程的特点来分析

使用特权

评论回复
板凳
ballack_linux| | 2015-1-23 13:17 | 只看该作者
#ifdef         CPUGLOBALS
#define        CPU_EXT
#else
#define        CPU_EXT    extern
#endif

你定义了CPUGLOBALS的话, CPU_EXT就没什么作用,当你没定义CPUGLOBALS时,CPU_EXT就可以替代extern。
这样做的好处是 只要你在代码里面用CPU_EXT就可以。
随时想什么时候变更都可以, 不用专门进到代码里面去手动一个一个修改。

使用特权

评论回复
地板
ayb_ice| | 2015-1-23 13:34 | 只看该作者
本帖最后由 ayb_ice 于 2015-1-23 14:39 编辑

定义+声明一个头文件搞定

//________
// cpu.c
#define CPUGLOBALS
#include "cpu.h"

void xxx(void)
{
        ...
}

//________
// my.c
#include "cpu.h"

void xxx(void)
{
        ...
}

使用特权

评论回复
5
dianzilc|  楼主 | 2015-1-24 12:53 | 只看该作者
ayb_ice 发表于 2015-1-23 13:34
定义+声明一个头文件搞定

//________

嗯,的确是这样。第一次看到这样写的,习惯把工程的全局变量统一都写在一个.c和.h文件里调用就好。像上面我问的写法感觉看着别扭...

使用特权

评论回复
6
ayb_ice| | 2015-1-24 13:32 | 只看该作者
dianzilc 发表于 2015-1-24 12:53
嗯,的确是这样。第一次看到这样写的,习惯把工程的全局变量统一都写在一个.c和.h文件里调用就好。像上面 ...

程序大了,自然就会用到这些,其实好处显而易见

使用特权

评论回复
7
dianzilc|  楼主 | 2015-1-26 12:48 | 只看该作者
谢谢各位大手们指点了!

使用特权

评论回复
8
huangxz| | 2015-1-26 13:31 | 只看该作者
这样是比较方便的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

92

帖子

0

粉丝