命名空间:命名空间外定义的宏在空间内无法访问?

辉歌 2006-04-15 12:17:59
1,举例如下:
#define ASSERT(x) { if ( !( x ) ) _asm{ int 0x03 } }

namespace WT{
void ttt()
{
....
ASSERT(x);
}
}

编译提示 ASSERT:undeclared identifier


-----------------

2,我想做一个DLL,把在一个在某命名空间的类导出。可以吗?需要怎么做?
namespace WT
{
class MY_API WT_Rename
{....};
}

客户端使用的时候:
WT::WT_Rename x;
是这样的吗?
...全文
527 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
昊叔 2006-04-17
  • 打赏
  • 举报
回复
这个没问题,估计是其他地方的
yuanchuang 2006-04-17
  • 打赏
  • 举报
回复
不需要字符串联结的,应该就没有问题,能用
bobob 2006-04-17
  • 打赏
  • 举报
回复
1,举例如下:
#define ASSERT(x) { if ( !( x ) ) _asm{ int 0x03 } }

namespace WT{
void ttt()
{
....
ASSERT(x);
}
}

编译提示 ASSERT:undeclared identifier
===============>
1,举例如下:
#define ASSERT(x) { if ( !( x ) ) _asm{ int 0x03 } }

namespace WT{
void ttt()
{
....
::ASSERT(x);
}
}
JohnTitor 2006-04-16
  • 打赏
  • 举报
回复
1.宏定义都是preprocesser处理的,而namespace是编译器处理的,所以应该不存在无法访问的问题。lz的问题可能是其他的引起的吧
2.是这样的
lonelyforest 2006-04-15
  • 打赏
  • 举报
回复
2,我想做一个DLL,把在一个在某命名空间的类导出。可以吗?需要怎么做?

估计导出为.lib可以, 没有用过
辉歌 2006-04-15
  • 打赏
  • 举报
回复
楼上的好心。不过没看问题。麻烦看看问题好吗?
chenhu_doc 2006-04-15
  • 打赏
  • 举报
回复
#define ASSERT(x) ( if ( !( x ) ) _asm{ int 0x03 })
chenhu_doc 2006-04-15
  • 打赏
  • 举报
回复
#include <assert.h>
yuanchuang 2006-04-15
  • 打赏
  • 举报
回复
能用吧
#define和#undef配对
和namespace没有关系

firetoucher 2006-04-15
  • 打赏
  • 举报
回复
1 直接使用就行了。怀疑所报错误是你的x有问题,或者你使用了一个和C++标准不兼容的编译器。在C++标准16.3.4:
A macro definition lasts (independent of block structure) until a corresponding #undef directive is encountered or (if none is encountered) until the end of the translation unit.

2 嗯。不过你的MY_API是什么DD?

FT
--
Anything one man can imagine, other men can make real.
sankt 2006-04-15
  • 打赏
  • 举报
回复
http://dev.yesky.com/430/2142930_2.shtml

65,189

社区成员

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

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