C语言多个源程序宏定义的作用范围

如题所述

宏定义分类:
(1)不带参数的宏定义
形式:
#define
宏名
[宏体]功能:可以实现用宏体代替宏名使用实例:
#define
TRUE
1作用:程序中多次使用TRUE,如果需要对TRUE的值进行修改,只需改动一处就可以了
(2)带参数的宏:
#define
宏名
(
参数表)
[宏体]
宏定义作用:
(1)方便程序的修改
上面的#define
TRUE
1就是一个实例
(2)提高程序的运行效率
宏定义的展开是在程序的预处理阶段完成的,无需运行时分配内存,能够部分实现函数的功能,却没有函数调用的压栈、弹栈开销,效率较高
(3)增强可读性
这点不言而喻,当我们看到类似PI这样的宏定义时,自然可以想到它对应的是圆周率常量
(4)字符串拼接
例如:#define
CAT(a,b,c)
a##b##c
main(){
printf("%d\n"
CAT(1,2,3));
printf("%s\n",
CAT('a',
'b',
'c');}
程序的输出会是:
123abc
(5)参数转化成字符串
示例:
#defind
CAT(n)
"abc"#n
main(){
printf("%s\n",
CAT(15));}
输出的结果会是abc15
(6)用于程序调试跟踪常见的用于调试的宏有,_
L
I
N
E
_,_
F
I
L
E
_,_
D
A
T
E
_,_
T
I
M
E
_,_
S
T
D
C
_
(7)实现可变宏
举例来说:
#define
PR(...)
printf(_
_VA_ARGS_
_)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-27
宏定义分类:
(1)不带参数的宏定义
形式:
#define
宏名
[宏体]
功能:可以实现用宏体代替宏名
使用实例:
#define
TRUE
1
作用:程序中多次使用TRUE,如果需要对TRUE的值进行修改,只需改动一处就可以了
(2)带参数的宏:
#define
宏名
(
参数表)
[宏体]
宏定义作用:
(1)方便程序的修改
上面的#define
TRUE
1就是一个实例
(2)提高程序的运行效率
宏定义的展开是在程序的预处理阶段完成的,无需运行时分配内存,能够部分实现函数的功能,却没有函数调用的压栈、弹栈开销,效率较高
(3)增强可读性
这点不言而喻,当我们看到类似PI这样的宏定义时,自然可以想到它对应的是圆周率常量
(4)字符串拼接
例如:
#define
CAT(a,b,c)
a##b##c
main()
{
printf("%d\n"
CAT(1,2,3));
printf("%s\n",
CAT('a',
'b',
'c');
}
程序的输出会是:
123
abc
(5)参数转化成字符串
示例:
#defind
CAT(n)
"abc"#n
main()
{
printf("%s\n",
CAT(15));
}
输出的结果会是
abc15
(6)用于程序调试跟踪
常见的用于调试的宏有,_
L
I
N
E
_,_
F
I
L
E
_,_
D
A
T
E
_,_
T
I
M
E
_,_
S
T
D
C
_
(7)实现可变宏
举例来说:
#define
PR(...)
printf(_
_VA_ARGS_
_)
第2个回答  2020-02-13

最好把公用的宏定义放到一个公共的头文件中,如common.h,两个源文件都包含这个头文件就可以了。
上面回答错误,只要你的函数和宏定义在一个文件中就可以了
相似回答