C语言中的(macro) 在C语言中,(macro)也是一个挺有意思的东西。C语言中的由预处理指令 #define 来定义。说到这里,再简单了解下预处理。在编译器对程序处理的过程中,在字符到源字符的映射和逻辑行处理后就会对文本进行划分,划分出预处理的语言符号(token)序列及空白字符和注释序列,然后就是预处理的过程了。预处理指令 #define是一个明显常量定义指令,用于定义符号
#代表命令要被预处理器处理#define 定义的可以出现在程序的任意位置#define 定义之后的代码都可以使用这个 是字面量,不占用内存 单步编译预处理器,只进行文本替换,不进行语法检查:gcc -E test.c -D test.i 完整编译:gcc test.c 表达式#define
转载 2019-06-09 21:40:00
146阅读
2评论
#include #define LEN 6 #define MAX(a, b) (a > b ? a : b) #define SWAP(x, y) \ x = x+y;\ y = x - y;\ x = x - y; int arr[LEN] = {1,2,3,4,5,6}; int main(){ printf("%d\n", (int)sizeof(arr)); i...
转载 2017-08-10 11:24:00
79阅读
2评论
参数的字符串化和参数的连接和预定义
c
IT
原创 2017-07-09 18:35:00
90阅读
一. #define是C语言中提供的定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C
转载 2013-12-28 17:56:00
135阅读
2评论
是什么 计算机科学里的是一种抽象(Abstraction), 它根据一系列预定义的规则替换一定的文本模式。 解释器或编译器在遇到时会自动进行这一模式替换。 对于编译语言展开在编译时发生,进行展开的工具常被称为展开器。 绝大多数情况下,“”这个词的使用暗示着将小命令或动作转化为一系列指
转载 2021-05-20 18:16:00
243阅读
2评论
1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H   //头文件内容 #endif 2,重新定义一些类型,防止由
原创 2023-04-23 09:17:20
135阅读
怀念二抱三抱
原创 2022-07-08 17:19:26
147阅读
    所谓的就是一种预处理命令,什么是与处理呢?即在编译过程之前先对程序代码做出的必要的转换处理。有两个作用:1.当遇到需要将程序某个特定的数量在程序中出现的所有实例通通加以修改时,程序只需改动一处即可。2.大多数C语言函数调用时都会带来重大的系统开销,而看上去像一个函数却没有函数调用的开销。     虽然有优点,但是
   目的是利用某一标识符标识某个文本字符串。在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为,然后每个出现该数据或程序片段的地方用名替代,选择定义来做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改定义中的字符串即可,不需要修改多处。定义命令:define优点:方便程序的修改,同时也能提
常用定义 数值相关的定义    闰年的判断 ,年份可以整除4并且不能整除100,或者可以整除400,则为闰年;#define IS_LEAP_YEAR(y) (((((y) % 4) == 0) && (((y) % 100) != 0))  \                         || (((y) % 400) == 0))/*判断是否是闰年*/    1    
原创 2021-04-16 12:27:19
2631阅读
1:开关作用,条件编程 #ifdef A 程序段 #endif 2:避免重复定义,重复包舍 #ifndef A #defined A 程序段 #endif这几个是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另
转载 2023-07-20 21:04:21
220阅读
使用要求:头文件:#include 当使用assert()时,给它一个参数,即一个表示断言为真的表达式。预处理器产生测试该断言的的代码,如果断言不为真,则在发出一个错误信息告诉断言是什么,以及它失败之后,程序终止。例:#include using namespace std;int main(){ int a = 1; assert(1 != a); ret
原创 2022-08-30 12:20:17
192阅读
define MAX 1025 //定义int main()int main()运行结果if (!exit(1);1.函数要保证运算的完整性。2.函数在一
原创 8月前
475阅读
相关链接https://blog.csdn.net/weixin_44498318/article/details/128066613
原创 2023-06-17 21:06:27
0阅读
岁月不饶人,这年纪大了记忆力真是差了很多。今天写程序需要用到可变参数的,可是忘了怎么写,这倒也没什么,因为我一向是不记忆这些语法细节的,反正我知道程序里有个地方用到了这种技巧,但是可悲的是我忘了在哪个地方。搜索?语法都忘了搜个P呀。只好凭着印象,在自己负责的模块代码中找了一圈,花了十几分钟才终于在日志模块找到。唉,看来还是写下来比较好,这记忆力实在是不能相信了。
原创 2012-02-03 14:48:53
1428阅读
1点赞
1评论
C语言的妙用C程序的编译分为预处理,编译,汇编,链接4个阶段。预处理会展开所有的的强大在于
原创 2023-01-10 11:42:09
103阅读
转载 2022-01-10 09:29:18
169阅读
C语言中,#和##是两个重要的预处理器操作符,它们在定义中发挥着关键作用: 1 操作符(字符串化操作符): 操作符用于将参数转换为字符串常量。在定义中,当参数前面加上#时,预处理器会将参数转换为一个字符串。这对于生成调试信息、日志消息或者动态构建字符串是非常有用的。 例如: #define STR(x) #x printf("%s\n", STR(Hello
原创 2024-05-08 23:22:25
88阅读
​使用的优点1.方便程序的修改 2.提高程序的运行效率。         发生函数调用时,需要保留调用函数的现场,以便子  函数执行结束后能返回继续执行,同样在子函数执行完后要恢复调用     函数的现场,这都需要一定的时间,如果子函数执行的操作比较多,这种转换时间开销可以忽 略,但如果子函数完成的功能   &nbs
原创 2022-03-18 16:35:44
812阅读
  • 1
  • 2
  • 3
  • 4
  • 5