#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定义可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
通过 D选项可以控制编译器在编译时的宏定义值,测试例程如下: 显然这里面定义了一个宏CCC。 如果使用编译命令: 那么编译并执行以后,输出的结果显然是 。 如果使用编译指令: 则输出的结果就是 了。 ...
2021-05-25 23:00 0 220 推荐指数:
#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定义可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
笔记整理: C语言带参数宏定义 宏定义 宏定义的一般形式为:#define 宏名 字符串或者表达式预处理的工作就是替换,就是将宏名替换成相应的字符串与表达式。 宏定义字符串: 该示例中的语句int sum = 20 + N;,N被100代替了 宏定义 ...
忘了啥时候记的笔记了 @ 目录 宏定义 1.不带参数的宏定义: 2.带参数的宏定义: C语言宏定义技巧(常用宏定义) 1,防止一个头文件被重复包含 ...
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个 ...
...
最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总结了一下讨论,加上自己的理解,do{...}while(0)的价值主要体现在: 1. 增加代码的适应性 下面的宏定义没有使用do{...}while ...
1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎。它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认识这个宏了;也可以把任何东西定义成宏。因为编译器会在预编译的时候用真身替换替身,而在 ...
注意区分宏定义函数和普通函数定义的区别: 宏定义中表达式的参数要加括号,否则可能会出错(运算的优先级): 同理计算的优先级问题还可以出现的main()函数中表达式中: 所以一般是不建议利用宏定义来表示太多的计算表达式,很可能会出现表达式计算错误。 ...