关于#ifndef

[复制链接]
1579|3
 楼主| txcy 发表于 2014-3-27 18:22 | 显示全部楼层 |阅读模式
我的理解是,在头文件的开头:
#ifndef GLOBALS_H
#define GLOBALS_H
...//函数原型
#endif

但是看到这样的:
#ifdef GLOBALS
#define EXT
#else
#define EXT extern
#endif
//
...//函数原型
#define EXT 这么写是什么意思?
另外把/函数原型写在#endif后面,会重复包含函数原型的吧?
火箭球迷 发表于 2014-3-27 18:38 | 显示全部楼层
#ifdef GLOBALS
#define EXT
#else
#define EXT extern
#endif

如果定义GLOBALS, #define EXT相当于EXT定义为”空”,说明下面的函数是在这个文件里面声明的,如果没有定义GLOBALS,
#define EXT extern 相当于EXT定义为extern ,说明下面的函数已经在别处声明了了
pkat 发表于 2014-3-27 18:43 | 显示全部楼层
使用extern 就说明这个函数或者变量已经在别处声明了,如果不加这个的话就会造成重复声明,这个extern关键字在头文件或者C/CPP文件用都是可以的,没有限制只能在头文件里面使用
monkeypony 发表于 2014-3-27 19:02 来自手机 | 显示全部楼层
这样做只是为了以防万一,程序很大时怕有重复的定义,或者移植程序时出现问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

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