读书人

#define在.h资料和.cpp文件使用有何区

发布时间: 2012-09-04 14:19:30 作者: rapoo

#define在.h文件和.cpp文件使用有何区别?
例如:
我在a.h文件中
inline void fun()
{
#ifndef ABC
//1
#else
//2
#endif
}
在c.cpp中
void Test()
{
#define ABC
fun();//这里我只是想调用2,为啥不能得到我的预期?而是到了1中?
#undef ABC
}



[解决办法]
预编译是最早发生的。
[解决办法]
要把#define ABC放在#include "a.h"之前。
[解决办法]
去弄清楚什么叫预编译命令
去弄清楚什么叫预编译,什么叫编译,什么叫链接,什么叫执行

别想当然的写代码,写代码之前先弄清楚你写的是啥
谁告诉你#define可以用来做这种事情了?你自己发明的语法!
[解决办法]
1、2、3楼均正解
[解决办法]

探讨

没有足够的分了...

就在这描述下,唉!没分了...

我重载了opreator new操作符,里面的实现用到自己封装的内存管理类的单实例对象,而创建单实例对象的实现是当存在就获取,不存在就new,这时候就递归了。我想在创建单实例对象用的new为我重载前的new,其他的就是使用我重载的new。该如何?
这操作符又不像普通函数或变量,可以加域名来搞。求解答。

[解决办法]
define是属于预编译。
inline void fun()
{
#ifndef ABC
//1
#else
//2
#endif
}

预编译这个函数时,在这个文件之前无法找到那个宏,所以就会把//1这部分代码编进去了。

读书人网 >C++

热点推荐