/*本程序时为了验证用宏来做 * 两个数的大小比较的写法*/#include<stdio.h>#define MAX(x,y) ((x)<(y)?(y):(x))#define MIN(X,Y) ({\ typeof (X) x_ = (X);\ typeof (Y) y_ = (Y);\ (x_ < y_) ? x_ : y_; })/*({...})的作用是将内部的几条语句中最后一条的值返回,它也允许在内部声明变量(因为它通过大括号组成了一个局部Scope)*/int foo(…
C 语言宏定义1.例子如下: #define PRINT_STR(s) printf("%s",s.c_str()) string str = "abcd"; PRINT_STR(str); 结果如下:abcd2.现在我期望打印出,str=abcd, 容易想到的解决办法是: #define PRINT_STR(s) printf("s" "=" "%s",s.c_str()) 打印出来的结果是 s=abcd…
将C语言宏定义转换成字符串! 摘自:https://blog.csdn.net/happen23/article/details/50602667 2016年01月28日 19:15:47 六个九十度 阅读数:10185   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/happen23/article/details/50602667 适用场景举例 流媒体处理系统中,采样率是个很重要的参数,很多地方都要用,如果用来分配内存,则 #define…
1.宏定义说明 宏定义是比较常用的预处理指令,即使用"标识符"来表示"替换列表"中的内容.标识符称为宏名,在预处理过程中,预处理器会把源程序中所有宏名,替换成宏定义中替换列表中的内容. 常见的宏定义有两种,不带参数的宏定义和带参数的宏定义. 2.无参宏定义 无参数宏定义的格式为: #define 标识符 替换列表 替换列表可以是数值常量.字符常量.字符串常量等,故可以把宏定义理解为使用标识符表示一常量,或称符号常量. 说明: 1) # 可以不在行首,但只允许它前面有…
可变参数宏定义 C99编译器标准允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏.可变参数宏就像下面这个样子: #define dbgprint(...) printf(__VA_ARGS__) 缺省号代表一个可以变化的参数表.使用保留名 __VA_ARGS__ 把参数传递给宏.当宏的调用展开时,实际的参数就传递给 printf()了. 可变参数宏不被ANSI/ISO C++ 所正式支持.因此,你应当检查你的编译器,看它是否支持这项技术. 用G…
在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中,在运行函数的时候,从最后一个(最右边)參数開始入栈.因此栈底高地址,栈顶低地址,举个样例说明一下: void test(int a, float b, char c); 那么,在调用test函数的时候,实參char c先进栈,然后是float b,最后才是int a,因此在内存中变量的存放次序是c-…
一. #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利. 1 #define命令剖析 1.1   #define的概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为…
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义......1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植.typedef unsigned char boolean; /* Boolean value type. */typedef unsigned long…
1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认识这个宏了:也可以把任何东西定义成宏.因为编译器会在预编译的时候用真身替换替身,而在我们的代码里面却又用常常用替身来帮忙. 看例子: #define PI 3.141592654 在此后的代码中你尽可以使用PI 来代替3.141592654,而且你最好就这么做.不然的话,如果我要把PI 的精度再提高…
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1.防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2.重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef unsigned long int uint32; /* Unsigned 32 bit value */ typedef u…