#define的后面怎么会只有一串字符的?

fiveyes 2002-01-05 08:05:01
我看到书上说#define是编译预处理命令之一,主要用途是作宏替换,不带参的就是见一个换一个的“查找替换”,带参的可以灵活处理一点表达式,可是都是要后跟两个东西,一个是查找的东西,一个是替换的东西。但是我却经常看到这样的代码:
#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
……
也没看到#ifndef,这个#define怎么工作的呢?
...全文
287 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiveyes 2002-01-29
  • 打赏
  • 举报
回复
后来的试验证明是这样的,原来事情是这么简单。
看到像#define XXXX的东西,我就给它加了点料,变成:
#define XXXX DOG
结果编译依然毫无问题。
hujun614 2002-01-05
  • 打赏
  • 举报
回复
通常都是这样的!
很多C/C++的头文件都这样包起来,我也爱这样用,
如下实例。
#ifndef NET_BAK_BAKSVR_HEADER_FJDKSL_JFEI_4893544
#define NET_BAK_BAKSVR_HEADER_FJDKSL_JFEI_4893544
......
#endif
fiveyes 2002-01-05
  • 打赏
  • 举报
回复
看来就是这么回事了。
fiveyes 2002-01-05
  • 打赏
  • 举报
回复
我这么理解成吗?
还有别的说法吗?
hely_cn 2002-01-05
  • 打赏
  • 举报
回复
learn.....
fiveyes 2002-01-05
  • 打赏
  • 举报
回复
To hujun614(胡均):
就是说,#define XXXXX这样的用法只是给后面的#ifdef之类的判断语句做个标记而已,只是在后面执行到象#ifdef XXXXX的时候,如果前面有了这个#define XXXXX,尽管没有给它做任何宏替换,都会使得#ifdef XXXXX的值变为true,是这样的吗?
fiveyes 2002-01-05
  • 打赏
  • 举报
回复
谢谢,不过这样的形式书上有介绍:
#ifndef XXXXXX
#define XXXXXX
问题是有时候看到这样的代码单独摆着:
#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
没看到它位于什么#ifXXX与#endif之间啊,
这是什么意思呢?
hujun614 2002-01-05
  • 打赏
  • 举报
回复
就是表明 INC_VCLDB_HEADERS, INC_VCLEXT_HEADERS
已被定义,以后可以用#ifndef INC_VCLDB_HEADERS,#if !defined(INC_VCLDB_HEADERS)
来判断是否定义过这个标记,可以保证在
#if !defined(INC_VCLDB_HEADERS)
...
#endif
中的定义只被定义一次。因为很多时候头文件包括头文件,这样就可以避免编译错误。
nickgg 2002-01-05
  • 打赏
  • 举报
回复
宏定义(#define)一般说来是条件便译
#define MacroName RepText
#define Macro
///////////////////////unit1.h//////////////////////////////
#ifndef Unit1H
#define Unit1H
class TForm1::public TForm
{


};
#endif

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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