#define 的用法

monday_l 2013-06-15 09:53:49

#define 后面仅跟了一个标示符代表什么意思,在编译的时候只是把它替换成空字符串码?这样定义宏有什么用处?

如 : #define FREEGLUT_STATIC

如果把这句话去掉的话会造成链接失败又是什么原因,但编译是能通过的。。。。

在程序中如果出现 FREEGLLUT_STATIC 不影响任何,说明这个宏是指向空字符串,但不明白为什么要定义这个“空”宏,为了"好看"吗?????
...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyage 2013-06-15
  • 打赏
  • 举报
回复
常见的是#define XXX_H //在头文件中使用 然后配合#ifdef 或#ifndef来防止文件重复包含 因为文件重复包含的话,就会有类或函数重复定义的问题出现 虽然理论上讲,#define后面可以是任何字符串,但一般要写的有意义 像#define FREEGLUT_STATIC 这个,就不知道是什么 了
monday_l 2013-06-15
  • 打赏
  • 举报
回复
谢谢大家了,这个用法还是属于条件编译里面的知识。。。。。大概知道怎么回事了
monday_l 2013-06-15
  • 打赏
  • 举报
回复
防止重复包含很明显,但不明白为什么要定义这个宏。 在MFC的源文件中,这种定义更是很多。。。。 不只是用于#ifndef #define #endif 它们就直接是 #define A #define B 等。。。。。。 感觉有点像标识符, 没有意义 ,就是为了编程方便 提示程序员 看着方便的作用。 但是,我在做OpenGL的时候,不能少 #define FREEGLUT_STATIC这句话,而且要放在最前面
lin5161678 2013-06-15
  • 打赏
  • 举报
回复
#define IN #define OUT int func(IN const int* parr, OUT int* pres); 这里基本上就算是 为了好看的
mujiok2003 2013-06-15
  • 打赏
  • 举报
回复
引用 1 楼 lin5161678 的回复:
1好看 2 配合其他宏指令 比如 #ifdef #ifndef使用
为什么好看?
mujiok2003 2013-06-15
  • 打赏
  • 举报
回复
常见的条件编译宏:NDEBUG, _UNICODE, _W32等,你的用法完全类似。
lin5161678 2013-06-15
  • 打赏
  • 举报
回复
对了 强调一下 这个宏不是空字符串 空字符串得这样 #define ZEROSTR "" 你这个宏替换 当成空格就可以了
ri_aje 2013-06-15
  • 打赏
  • 举报
回复
这样的 define 一般用于控制条件编译。比如, #ifdef FREEGLLUT_STATIC ... #endif 则 ... 部分会参与编译当且仅当 #define FREEGLUT_STATIC 存在。
mujiok2003 2013-06-15
  • 打赏
  • 举报
回复
条件编译, 比如下面的代码可以防止重复包含头文件。

#ifndef __some_head__
#define __some_head__
//code goes here
#endif
lin5161678 2013-06-15
  • 打赏
  • 举报
回复
1好看 2 配合其他宏指令 比如 #ifdef #ifndef使用

64,637

社区成员

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

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