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

[复制链接]
2115|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)
{
        ...
}
 楼主| dianzilc 发表于 2015-1-24 12:53 | 显示全部楼层
ayb_ice 发表于 2015-1-23 13:34
定义+声明一个头文件搞定

//________

嗯,的确是这样。第一次看到这样写的,习惯把工程的全局变量统一都写在一个.c和.h文件里调用就好。像上面我问的写法感觉看着别扭...
ayb_ice 发表于 2015-1-24 13:32 | 显示全部楼层
dianzilc 发表于 2015-1-24 12:53
嗯,的确是这样。第一次看到这样写的,习惯把工程的全局变量统一都写在一个.c和.h文件里调用就好。像上面 ...

程序大了,自然就会用到这些,其实好处显而易见
 楼主| dianzilc 发表于 2015-1-26 12:48 | 显示全部楼层
谢谢各位大手们指点了!
huangxz 发表于 2015-1-26 13:31 | 显示全部楼层
这样是比较方便的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

93

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部