一. c /c++语言中使用宏的主要目的主要有 3 个: 1. 提高代码的可读性; 把用到的常量定义成有意义的名字; 2. 无需函数调用,运行效率高; 对于一些简单的操作,无需调用函数,虽然编程是强调模块化,但是函数调用时,需要保护现场和恢复现场。这些都需要耗时。对于复杂的操作 ...
Container of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 实现方式: container of ptr, type, member 其实它的语法很简单,只是一些指针的灵活应用,它分两步: 第一步,首先定义一个临时的数据类型 通过typeof type gt member 获 ...
2017-12-03 14:30 0 1989 推荐指数:
一. c /c++语言中使用宏的主要目的主要有 3 个: 1. 提高代码的可读性; 把用到的常量定义成有意义的名字; 2. 无需函数调用,运行效率高; 对于一些简单的操作,无需调用函数,虽然编程是强调模块化,但是函数调用时,需要保护现场和恢复现场。这些都需要耗时。对于复杂的操作 ...
宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。 1.不带参数的宏定义: 宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”,字符串可以是常数、表达式、格式 ...
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个 ...
...
1、#define解析 #define是C语言中提供的宏定义的命令,其主要目的是为程序员编程时提供一定的方便,并能再一定程度上提供高级程序的运行效率。 1.1、#define命令解析 1.1.1、#define的概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义 ...
...
单井号:将后面的 宏参数 进行字符串操作,即 将后面的参数用双引号引起来 双井号:就是用于连接 #include <stdio.h> #define COMMAND(NAME) {#NAME,NAME##_command} #define PRINT(NAME) printf ...
C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。预处理命令不同于一般C++语句。因此预处理命令后通常不加分号。这并不是说所有的预处理命令后都不能有分号出现。由于宏定义只是用宏名对一个字符串进行简单的替换,因此如果在宏定义命令后加了分号,将会连同分号一起进行置换 ...