c语言宏定义中函数 c语言宏定义一个函数

c语言关于宏定义、函数宏定义的基础知识 。引用宏定义时,直接代入进行代换 。
既然已经宏定义SUB(a) (a)-(a) , 而程序中出现的对应a的是a b , 那么就将a换为a b代入表达式:
d=SUB(a b)*c=(a b)-(a b)*c=(2 3)-(2 3)*5
直接用(a b)-(a b)代换SUB(a b) 。这一点和数学是不同的 , 不要强行往数学上靠 。
C语言中带参数的宏定义与函数的区别(试举例)宏只是字符的替换,在预处理阶段就给替换到代码中去了比如下面的代码
#include
#define
MAX(x,
y)
((x)(y)?(x):y())
int
main()
{
int
a
=
2,
b
=
4;
int
m;
m
=
MAX(2,
4);
printf("%d\n",
m);
return
0;
}
如果你用的是gcc编译器,执行
gcc
-E
main.c
-o
main.i , 打开main.i文件就可以看到他是如何替换进去的,直接拖到最后,前面的都是stdio.h中的内容 。
int
【c语言宏定义中函数 c语言宏定义一个函数】main()
{
int
a
=
2,
b
=
4;
int
m;
m
=
((2)(4)?(2):4());
printf("%d\n",
m);
return
0;
}
函数就不同了 , 函数还需要分配栈空间 , 在执行函数时都要进行入栈和出栈操作 , 有的还需要分配堆空间 。
宏所实现的功能有限 , 而且长代码不易读 , 但是对于逻辑简单、代码不长、经常使用的功能由宏来实现是个不错的选择
“C语言的宏定义”是什么?宏定义又称为宏代换、宏替换 , 简称“宏” 。
是C提供的三种预处理功能的其中一种 。
1、宏名一般用大写 。
2、使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改 。例如:数组大小常用宏定义 。
3、预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查 。
4、宏定义末尾不加分号 。
5、宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头 。
6、可以用#undef命令终止宏定义的作用域 。
7、宏定义可以嵌套 。
8、字符串" "中永远不包含宏 。
9、宏定义不分配内存,变量定义分配内存 。
c语言宏定义中函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言宏定义一个函数、c语言宏定义中函数的信息别忘了在本站进行查找喔 。

    推荐阅读