宏相关问题

Learn-anything 2011-11-18 09:24:58
先看代码:

#ifndef GLOOX_API
# define GLOOX_API
#endif

GLOOX_API unsigned _lookup( const std::string& str, const char* values[],
unsigned size, int def = -1 );


问题:GLOOX_API 的作用是什么,他什么都没有写!
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixiang1983 2011-11-18
  • 打赏
  • 举报
回复
#ifndef GLOOX_API
#define GLOOX_API
#endif
这样写法是在防止重复包含、重定义、跨平台时自动选择时用到。
比如在C++中头文件的把类的定义写成这样,当文件相互包含而出现重复包含时,类的定义语句就不会多次执行,使类出现重定义:
#ifndef ___CLASS_STU__
#define ___CLASS_STU__
class stutent
{
int id;
char* name;
....
};
#endif
小楫轻舟 2011-11-18
  • 打赏
  • 举报
回复
头文件里经常这样定义的,防止被重复引用(#include " ")
無_1024 2011-11-18
  • 打赏
  • 举报
回复
怎么这么写啊
应该放在#define后面
lpxiangzi 2011-11-18
  • 打赏
  • 举报
回复
从这段代码看时没什么作用,他这么写可能是为了跨平台准备的:
比如
#if defined(WIN32)
#ifndef CALLBACKE
# define CALLBACKE __callback
#endif
#else //linux
#ifndef CALLBACKE
# define CALLBACKE
#endif

void CALLBACKE fun();//linux 没有__callback的定义 但也不用修改代码

又或者:这么写的作用就是解释这个函数的作用和所在域

#
luciferisnotsatan 2011-11-18
  • 打赏
  • 举报
回复
在这里,没啥用,被#define成了个空白。
yisikaipu 2011-11-18
  • 打赏
  • 举报
回复
先起到占位作用,需要的时候,比如改成如下就可以把函数导出了
#define GLOOX_API _declspec(dllexport)

64,282

社区成员

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

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