gcc 的宏替换 __stringify
每次看到类似如下的代码,总是不解,为什么要分两级定义呢,分明可以直接将__stringify定义为 #x嘛。但大家都这么做,理论上是不会有问题的啊。今天忍不住搜了下,看来还是我没往深入地想啊,唉,鄙视自己!
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
假设:直接 #define __stringify(x) #x
且 #define AA bb
那么 __stringify(AA) 展开为 "AA"
而像最上面的定义方法,__stringify(AA) 将展开为 "bb"
不过,最后我还想问一句,gcc支持嵌套多少层宏定义,无限?
参考:http://hi.baidu.com/%B1%B1%B7%E7%B1%B1%B5%C4%D6%ED/blog/item/a2d8e031942aa20591ef39ae.html
转载于:https://www.cnblogs.com/windtail/archive/2011/04/13/2623217.html
gcc 的宏替换 __stringify相关推荐
- C语言格式化输出以及%宏替换
在初学C语言的时候,我们会接触到很多格式化输出.如%c,%t,%s,%d等等. 当然这些都是比较基本的用法.现在讲下相对比较晦涩的%后面跟宏替换.这个并不是常用的格式化输出用法,但也可以理解为就是格式 ...
- C++ 笔记(32)— 预处理、文件包含include、宏替换define、条件包含ifndef、define
C/C++预处理器在源代码编译之前对其进行一些文本性质的操作. 它的主要任务包括删除注释 . 插入 #include 指令包含的文件的内容 . 定义和替换由 #defme 指令定义的符号以及确定代码的 ...
- python宏替换_#和##在宏替换中的作用
#include #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s/n" ...
- C语言宏定义、宏替换
1.宏替换的格式 #define 名字 替换文本 后续所有出现名字的地方都将被替换为替换文本. 替换文本可以是任意的,例如 #define forever for(;;) //无限循环 该语句为无限循 ...
- c语言中宏替换时的顺序
http://hi.baidu.com/feichideche/item/f138221d97ada1fc746a84e2 宏替换顺序,这是以前在论坛里看到的一个问题,因此整理下来,供自己学习和参考: ...
- Java中的宏变量,宏替换详解。
转载自 Java中的宏变量,宏替换详解. 群友在微信群讨论的一个话题,有点意思,特拿出来分享一下. 输出true false 来看下面这段程序,和群友分享的大致一样. public static vo ...
- python宏替换_简单的宏替换
简单的宏替换 1.宏定义必须写在第一次使用该宏定义的代码之前: 2.宏定义不是以分号结束的 3.#define string1 string2 之间至少要有一个空格 4.string 1称为宏,str ...
- #和##在宏替换中的作用
#include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { print ...
- c语言宏定义替换字符串,C语言中,宏替换的替换规则
匿名用户 1级 2011-10-25 回答 简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种. 复杂的请看下面,讲的很全.下面的带参宏定义,多行 ...
- 宏替换、条件编译、头文件展开
宏替换.文件编译和头文件的展开 程序执行的几个步骤: 1.预处理: ①将头文件展开②宏替换③条件编译④去掉注释 2.编译: ①语义语法纠错②将.c文件编译成汇编语言 3.汇编:将汇编语言变成二进制机器 ...
最新文章
- C#基础练习(时间的三连击)
- 机器学习知识点(三十五)蒙特卡罗方法
- 深入并发包-ConcurrentHashMap
- 借助Web技术,桌面用户界面将保持活跃
- 【HDU - 1863】 畅通工程(并查集+最小生成树)
- python CV2裁剪图片并保存
- 点云配准_各类ICP介及特征配准流程介绍
- 生信技能树课程记录笔记(五)20220528
- 图的最短路径之Dijkstra算法
- JAVA日期转换函数(包括:日期、周数的计算)
- vue——动态吸顶组件
- 香槟分校计算机专业毕业生去向,2019年伊利诺伊州立大学香槟分校计算机专业排名_托普仕留学...
- 148 朴光佑 蓽齋
- html代码seo,SEO必学基础html代码基础
- 让开发又爱又恨的缓存
- 【Excel】用excel生成矩阵
- 《Stacked Attention Networks for Image Question Answering》论文解读与实验
- matlab 向量变标量,MATLAB变量——标量,向量,矩阵
- Googel广告推广后台如何操作?Googel广告怎么投放?
- J2EE是什么,主要包括哪些技术【转】
热门文章
- android activity使用,Android Activity使用拾遗
- mybatis逆向工程maven版本idea工具
- 数据库TCPIP协议开了,但还是远程连不上
- VsVim - Shortcut Key (快捷键)
- 利用 Commons-Fileupload 实现文件上传分析(转)
- c#实现打印功能,可以设置纸张大小,字体和颜色等
- 为什么调用支付宝接口后返回是错误页面!
- Java构造器(构造方法)与方法区别
- 宠物商城后台管理系统(springMVC+Mybatis+数据库)
- BZOJ4066 简单题(KD-Tree)