defined(GONGCHANG) && !defined(JINGPIN) //编译时既没有定义过GONGCHANG宏也没有定义过JINGPIN宏printf("100%%\n"); //显示普通商店折扣比率#elseprintf("120%%\n"); //显示精品点折扣比率#endifreturn 0;} 三、主函数 1、主函数形式参数 #include <stdio.h>int main(int argc/*后一个参数里的指针个...
// 在函数内定义一个 va_list 类型变量,该类型在 stdarg.h 头文件中定义。 va_list valist; double sum = 0.0; int i; // 调用 va_start 宏,初始化 va_list 变量为一个参数列表。宏 va_start 在 stdarg.h 头文件中定义。 va_start(valist, num); ...
__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语言中所讲,函数的使用可以使程序更加模块化,便于组织,而且可重复利用,但在发生函数调用时,需要保留调用函数的现场,以便子函数执行结束后能返回继续执行,同样在子函数执行完后要恢复调用函数的现场,这都需要一定的时间,如果子函数执行...
1. 宏参数和#define 定义中可以出现其他#define定义的符号。但是对于宏,不能出现递归。 2. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。 七、宏与函数的对比 宏通常被应用于执行简单的运算。 比如在两个数中找出较大的一个时,写成下面的宏,更有优势一些。
函数宏定义的格式为:`#define 函数名 (参数类型 参数名) 函数体` 其中: - `函数名`:宏定义的函数名,需要符合 C 语言的命名规则。 - `参数类型 参数名`:函数的参数,参数类型和参数名之间用空格隔开,多个参数用逗号分隔。 - `函数体`:函数的实现,可以是一行或多行代码。 3.函数宏定义的实例 下面是一个...
不带参数的宏定义比较简单,我们今天讲的是带参数的。最后红色字体提到有括号、没括号的区别。那提一个问题:怎么用宏定义表示数学上的函数f(x)=x*x? 有同学会说,这不简单,顺手就来: 代码语言:javascript 复制 #definef(X)X*X 但是,忽略了一点,宏代换是直接进行代换的。
语法:宏使用 #define 关键字定义,而内联函数使用 inline 关键字定义。 作用时间:宏在预处理阶段进行文本替换,而内联函数在编译阶段进行类型检查和可能的替换。 可调试性:由于宏是文本替换,所以调试宏可能比调试内联函数更加困难。 使用建议 当需要快速替换一段代码,并且不关心类型检查时,可以使用宏定义。
__func__:它指示所在的函数 __assert_perror_fail:打印一条包含错误码ERRNUM的错误消息,并终止程序 1. 2. 3. 4. 5. 6. 7. 8. 9. 五、反斜杠的作用 反斜杠起到换行作用,用于宏定义和字符串换行。其中宏定义中使用居多。如果一行代码有很多元素,导致太长影响阅读,可以通过在结尾加\的方式,实现换行,编...