宏定义可不可以嵌套

blackpool 2007-08-01 02:27:48
#ifdef A_SCAN
#define B_SCAN
... ... (定义1)
#else
#define B_SCAN
... ... (定义 2)

两个宏定义如上,当有A_SCAN定义时,取B_SCAN的第一个定义,反之取B_SCAN的第二个定义

现在问题是需要完成以下功能:如果取的是B_SCAN的第一个定义,我们定义第三个宏NEED_PRINT
如果取的B_SCAN的第二个定义,我们不定义NEED_PRINT

#ifdef B_SCAN
#define NEED_PRINT
... ...

现在怎么判断到底用的是B_SCAN的哪一个定义呢? 宏定义不可以嵌套吧?

(现在并不能把B_SCAN改为B_SCAN1和B_SCAN2)
...全文
1762 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2007-08-01
  • 打赏
  • 举报
回复
看你的要求应该是
#if !defined A_SCAN && defined B_SCAN
我啃 2007-08-01
  • 打赏
  • 举报
回复
多一个TAG
#ifdef A_SCAN
#define B_SCAN
#define B_SCAN_VER 0
... ... (定义1)
#else
#define B_SCAN
#define B_SCAN_VER 1
... ... (定义 2)

#if B_SCAN_VER==0
....
blackpool 2007-08-01
  • 打赏
  • 举报
回复
现在问题就在于使用
#ifdef A_SCAN 去判断没有用,不知道为什么

#ifdef A_SCAN
#define B_SCAN
... ... (定义1)
#else
#define B_SCAN
... ... (定义 2)

通过#ifdef A_SCAN可以得到B_SCAN的第一个定义

但是通过#ifdef A_SCAN却定义不了NEED_PRINT
#ifdef A_SCAN
#define NEED_PRINT
... ...

结果总是NEED_PRINT未定义

所以#if defined A_SCAN && defined B_SCAN 也不行
飞哥 2007-08-01
  • 打赏
  • 举报
回复
有点糊涂
怎么感觉就是类似于

#ifdef WIN32
HANDLE hThread = NULL;
#else
pthread_t hThread ;
#endif
taodm 2007-08-01
  • 打赏
  • 举报
回复
#ifdef A_SCAN && B_SCAN
我啃 2007-08-01
  • 打赏
  • 举报
回复
判断定义B_SCAN时的条件来判断B_SCAN到底是什么,也就是说用#ifdef A_SCAN来实现~

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧