1. 宏传递变长参数: 最近用C语言写一个程序,经常调用shell或者其他命令,代码中多处出现如下代码: 每调用一次就是三行代码,看着也十分不爽。偶然间学会通过宏传递参数,代码瞬间简化很多: 2. 宏中参数当做字符串使用 输出 ...
. 的功能是将其后面的宏参数进行字符串化操作 Stringfication ,简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号 那么实际使用中会出现下面所示的替换过程: 被替换为 这样每次divider 除数 为 的时候便会在标准错误流上输出一个提示信息。 . 被称为连接符 concatenator ,用来将两个Token连接为一个Token, 符是把传递过来的参数当成字符串进行 ...
2014-08-05 16:57 0 6424 推荐指数:
1. 宏传递变长参数: 最近用C语言写一个程序,经常调用shell或者其他命令,代码中多处出现如下代码: 每调用一次就是三行代码,看着也十分不爽。偶然间学会通过宏传递参数,代码瞬间简化很多: 2. 宏中参数当做字符串使用 输出 ...
程序如下: 答案:第一行:12 第二行:f(1,2) 说明: 1、关于符号#和## 两个符号都只能用于预处理宏扩展。不能在普通的源码中使用它们,只能在宏定义中使用。 简单的说,#是把宏参数变为一个字符串,##是把两个宏参数连接在一起。 2、关于宏展开 ...
C/C++ 宏命令的神奇用法。 先看下面三条语句: #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) ...
在C++的宏定义中,符号##一般是用于连接,包括参数的连接,参数与标识符的连接等,然后形成一个新的标识符。 下面举几个例子来进行说明。 eg1: 或者不用#define ab "123456",直接在main函数中定义一个string ab ...
书中是`define宏定义+`inlude "file.v"文件包含来实现参数模块化设计的方式 实战: 1.新建参数模块文件(我命名为para.v); 2.在para.v文件中使用'define宏定义参数: //`define+name+参数 `define ...
单井号:将后面的 宏参数 进行字符串操作,即 将后面的参数用双引号引起来 双井号:就是用于连接 #include <stdio.h> #define COMMAND(NAME) {#NAME,NAME##_command} #define PRINT(NAME) printf ...
代码中的family_##who表示以family_为前缀,将who为后缀与前缀连接,合成一个名字 参数前面的#使用来取参数的实值,ADD(1,200)运行结果为201 ...
实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解释器用的,对所编译的文件完全没有作用 ...