c++头文件中#define的作用

2024-12-22 21:49:09
推荐回答(4个)
回答1:

#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1)
简单的宏定义:
#define
<宏名>
<字符串>
例:
#define
PI
3.1415926
(2)
带参数的宏定义
#define
<宏名>
(
<参数表>)
<宏体>
例:
#define
A(x)
x

回答2:

C++中一般不用#define来定义常量或者函数
我觉得唯一用到的地方是在防止头文件重复包含的时候#ifndef...#define...#endif
你下面问的*LinkList是一个LNode结构的别名,同样可以用他来创建一个LNode结构对象.
C++里最好把结构,类什么的都看成对象.
LinkList
&L,这里就不难理解了吧,LinkList
是对象类型(一个LNode的指针),&L是参数名(等于
&(*LNode)
).
L
=
new
LNode;
new是C++的内建方法,用来开辟内存空间.这里就是为L分配一个LNode结构那么大的内存空间.

回答3:

正常情况下所有的头文件都是
#ifndef
....
#define
//头文件中的内容
#endif
上面的结构是为了不使头文件出现重复包含.
另一种
:

#define
MAXNUM
500
#define
abs(x)
((x)>0
?
(x)
:
-(x)
是宏.
你说的LinkList是LNode的指针,而&L是LinkList的引用,目的是把程序中分配的LNode返回。
new就是c中的malloc,动态分配一个LNode

回答4:

宏定义
简单的字符替换

编译前做的替换
#define
THREE
3
int
a
=
THREE;
在送编译时
替换为
int
a
=
3;
#define
POWER(x)
x
*
x
int
a
=
POWER(10)
在送编译时
替换为
10
*
10
注意
若为
POWER(5
+
3)
则替换为
5
+
3
*
5
+
3
所以宏只是简单的文本替换
*LinkList
在typedef
的作用下
是LNode
的指针类型
也就是说申明LNode
指针的时候你可以用
LinkList
p
=
0;//等价于
LNode*
p
=
0;
new
动态分配内存空间