C 语言函数宏的单行与多行封装 在c语言开发中,出了使用函数封装代码之外,也经常使用宏来封装一些重要或简洁的代码。 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销,在实际项目开发中,函数宏的作用很强大。下面介绍函数宏的各种写法: 一...
b=tmp;\}while(0)intmain(){int var_a=1;int var_b=2;if(1)INT_SWAP(var_a,var_b);elseprintf("hello world!\n");printf("var_a = %d, var_b = %d\n",var_a,var_b);// var_a = 2, var_b = 1return0;} C 语言规定, do{...}while(0) 语法必须使用 ; 作为语句结尾。因此不...
POW(++x) 替换成 ++x*++x 按照c语言的优先级和结合性,先计算表达式(++x*++x)中右边的++x,这时候变量x累加变成4,然后再计算左边的++x,这时候变量x继续累加变成了5,然后再计算x*x,因为变量x此时已经变成了5,所以x*x就等于25,当然,这并不是我们想要的结果。而如果老老实实的用函数来实现的话...
C语言的宏文本替换,是通过预处理指令define实现的,#define的使用场景主要有:1)直接使用标识符不定义具体常量的标识符用法 2)替换常量的对象式宏(Object-like macros)3)模拟函数功能的函数式宏(Function-like macros)4)替换文中支持可变的参数数量的可变参宏 5)#和##运算法的用法等。define 标识符 当用...
C语言中宏函数的定义和用法 宏函数是一种特殊的函数宏,与普通函数宏不同的是,它可以拥有多条语句和局部变量,从而实现更复杂的功能。它的定义类似于普通函数,但用大括号包裹起来,并以分号结束每个语句。 #defineTEST(a, b) ({ int temp = a; a = b;...
#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。 (1) 简单的宏定义 格式:#define <宏名/标识符> <字符串> ...
c语言宏定义函数 1.什么是C语言宏定义函数 C语言宏定义函数是指在C语言程序中使用宏定义函数实现的一种特殊的代码块,它可以被定义为一组指令的集合。它的基本结构类似于函数,但它不像函数那样可以调用,而是在编译时处理,在代码执行阶段不存在。2.宏定义函数的优点 (1)C语言宏定义函数可以简化编码并加快程序...
C-类函数宏、可变参数宏、#、## 今天在知乎上看到一个有趣的宏定义: #define LOG_INFO(fmt, args...) fprintf(stdout, "%d|"fmt"\n", __LINE__, ##args) 1. 一时间竟不知道如何解释这个宏定义 。查阅了相关资料后总算基本了解它的工作原理,让我们一步一步来。
[FUNCTION: %s] [LINE: %d] " fmt "\n", \__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__)#else#define LOG(fmt, ...)#endifLOG("一次LOG测试");LOG("测试可变参: %d",4);[FILE:D:\xx.c][FUNCTION:main][LINE:72]一次debug测试[FILE:D:\xx.c][FUNCTION:main][LINE:73]测试...
c语言再学习之宏与函数 宏 宏概念: C++宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。 宏书写形式: #define <宏名>(<参数表>) <宏体> 宏与函数的区别: 时间上考虑: 1:宏只占编译时间,函数调用则占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以...