__func__ 函数名/非标准 __FUNC__ 函数名/非标准 __PRETTY_FUNCTION__ 更详细的函数信息/非标准 4、预定义命令-条件式编译 函数 说明 #ifdef DEBUG 是否定义了DEBUG宏 #ifndef DEBUG 是否没有定义DEBUG宏 #if MAX_N == 5 宏MAX_N是否等于5 #elif MAX_N == 4 否则宏MAX_N是否等于4 #else #endif...
C语言的宏可以分为宏定义和宏函数,宏定义又可以叫做对象式宏,在编译时直接把定义的内容替换到源码处,只是一个文本替换功能,不会进行计算。宏函数又叫做类函数宏,跟函数的使用类似,但是他的本质也是文本的替换,这就有产生很多注意事项。 #defineN10//宏定义#definemax(a,b) (a>b?a:b)//宏函数 不管是宏定义...
#define ABS(n) n >= 0 ? n : 0 - n //只要能当做数字使用宏必须编写成一个表达式 #define NEG(n) n = 0 - n //宏的参数代表的就是函数的存储区 int abs(int val) { //因为函数有存放返回值的 //存储区,所以采用任何方法 //计算得到结果都可以 if (val >= 0) { return val; } else ...
(asctime貌似是指的一个函数) __STDC__:编辑器为ISO兼容实现时位十进制整型常量 __func__:它指示所在的函数 __assert_perror_fail:打印一条包含错误码ERRNUM的错误消息,并终止程序 1. 2. 3. 4. 5. 6. 7. 8. 9. 五、反斜杠的作用 反斜杠起到换行作用,用于宏定义和字符串换行。其中宏定义中使用居...
1. 宏参数和#define 定义中可以出现其他#define定义的符号。但是对于宏,不能出现递归。 2. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。 七、宏与函数的对比 宏通常被应用于执行简单的运算。 比如在两个数中找出较大的一个时,写成下面的宏,更有优势一些。
语法:宏使用 #define 关键字定义,而内联函数使用 inline 关键字定义。 作用时间:宏在预处理阶段进行文本替换,而内联函数在编译阶段进行类型检查和可能的替换。 可调试性:由于宏是文本替换,所以调试宏可能比调试内联函数更加困难。 使用建议 当需要快速替换一段代码,并且不关心类型检查时,可以使用宏定义。
不带参数的宏定义比较简单,我们今天讲的是带参数的。最后红色字体提到有括号、没括号的区别。那提一个问题:怎么用宏定义表示数学上的函数f(x)=x*x? 有同学会说,这不简单,顺手就来: 代码语言:javascript 复制 #definef(X)X*X 但是,忽略了一点,宏代换是直接进行代换的。
h>#define sum(b,c){int d=0;d=b+c;printf("两者的和:%d\n",d);}int main(){ int x=0,y=0; scanf("%d%d",&x,&y); sum (x,y); return 0;}拓展资料使用宏函数或者宏函数时,注意如下几点:1.宏函数的参数没有类型...
在C 语言中,宏定义是一种预处理指令,用于在编译之前将某些代码片段替换为指定的文本。使用宏定义可以定义一个函数或者函数模板。下面是宏定义函数的使用方法: 定义宏函数: #definefunctionName(parameters) replacement 其中,functionName 是宏函数的名称,parameters 是宏函数的参数列表,replacement 是替换的文本。