预编译的问题。判断是否相等。

HIGE6 2008-11-25 06:22:49
#define A __declspec(dllexport)
#define B __declspec(dllimport)

#ifdef C
#define D A
#else
#define D B
#endif

#if D == A //不使用C. 有没有办法判断D等于A,还是等于B
...
#endif
...全文
800 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxgamexx 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xinke87 的回复:]
引用 5 楼 lann64 的回复:
C/C++ code
#ifdef C
#define D A
#define test 1
#else
#define D B
#define test 0
#endif

#if test == 1


跟直接判断 D==A有区别么??
都要进行一次比较!
[/Quote]

有 应该是因为A的返回类型不确定所导致不能直接==比较
wh102035 2008-11-27
  • 打赏
  • 举报
回复
#define A __declspec(dllexport)
#define B __declspec(dllimport)

#ifdef C
#define D A
#else
#define D B
#endif

#ifdef D == A //不使用C. 有没有办法判断D等于A,还是等于B
#ifdef C //使用C来判断不就OK了..你非得搞个多余的出来
...
#endif
lann64 2008-11-26
  • 打赏
  • 举报
回复

#ifdef C
#define D A
#define test 1
#else
#define D B
#define test 0
#endif

#if test == 1

引入一个辅助宏变量。
HIGE6 2008-11-26
  • 打赏
  • 举报
回复
如果 #if D == A 这样写会提示错误
fatal error C1017
xinke87 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lann64 的回复:]
C/C++ code
#ifdef C
#define D A
#define test 1
#else
#define D B
#define test 0
#endif

#if test == 1

[/Quote]
跟直接判断 D==A有区别么??
都要进行一次比较!
xxgamexx 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cba_v 的回复:]
是不是 把对D的判断  转换到 对test 判断啊?
[/Quote]

是的
cba_v 2008-11-26
  • 打赏
  • 举报
回复
是不是 把对D的判断 转换到 对test 判断啊?
xxgamexx 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cba_v 的回复:]
ls 能否 解释一下 什么是辅助宏变量
在 这个程序里 起什么作用
谢谢了
[/Quote]
不能直接判断的话 就用令一个标示 来判断 只是引用一个简单的标量而已。
cba_v 2008-11-26
  • 打赏
  • 举报
回复
ls 能否 解释一下 什么是辅助宏变量
在 这个程序里 起什么作用
谢谢了
xxgamexx 2008-11-25
  • 打赏
  • 举报
回复
__declspec(dllexport)
__declspec(dllimport)


这个2个的返回类型是什么?
  • 打赏
  • 举报
回复
MSC,stlport中常见
#if _MSC_VER > 1000
#if defined(_MSC_VER)
说明整数是可以这么预处理的,

“__declspec(dllexport) “这个估计不行
就呆在云上 2008-11-25
  • 打赏
  • 举报
回复
就是你写的那样操作就是了,比如:
#include <iostream>
#include <string>
using namespace std;
#define D 10


int main() {
#if D == 10
printf("yes!\n");
#endif
}

输出:
yes!

65,210

社区成员

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

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