gcc宏展开

news/2025/1/12 1:09:30/

要把源代码中的宏展开,其实只要使用gcc进行预处理即可。

gcc -E source.c >out.txt

-E表示只进行预处理,不进行编译。

预处理时会把注释当成空格处理掉,如果想保留其中的注释,可以加上-C选项,即:

gcc -E -C source.c >out.txt


我遇到的问题是宏里面的注释并没有保留下来。

#define generate_some_code() \

int i=count; /* init the loop var*/ \

while(i--) \

sum += i;


进行宏展开后,这里面的注释并没有保留。我想展开的源码里面包含了大量的宏,代码量也非常大,展开之后想要参考里面的注释有什么办法呢?

最后想到的方法是,利用替换功能,把/*和*/替换成"",从而把注释变成了字符串。再用Gcc展开宏之后,就保留下来了。


http://www.ppmy.cn/news/632149.html

相关文章

将一个宏被另一个宏使用

带参数的宏定义的一般形式如下&#xff1a; #define <宏名>&#xff08;<参数表>&#xff09; <宏体> 一.如下图 我想要计算一个三角形的面积 我要定义两个宏&#xff1a;一个用来表示&#xff1a;s1/2*(abc) 一个用来表示&#xff1a; (s-a)(s-b)*(s-c) …

NLP创业破局,如何摘取更高处的果实

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 2022年&#xff0c;云从科技、商汤科技先后登陆资本市场&#xff0c;计算机视觉四小龙中的旷视科技、依图科技也在摩拳擦掌。反观NLP领域&#xff0c;相关企业的发展速度、融资规模、上市进程仿佛都要略逊一筹&…

windows下cmake找不到glew、glfw等包的解决方法

错误的类型 这里就放一个glfw的错误图吧&#xff0c;glew报错的话和这个是一样的 找不到glew的解决方案 首先去官网下载glew编译好的文件&#xff0c;链接glew 之后解压如图&#xff0c;我们需要做的是复制bin的路径&#xff0c;我的路径为D:\code_study\glew-2.2.0-win32\gl…

cmake 一些有用的宏

一个开源项目&#xff0c;如果想依赖cmake的find_package规则来实现编译的自动查找&#xff0c;主要是<1>头文件路径<2>库名字<3>库路径这三个方面&#xff0c; 有2个办法&#xff1a; &#xff08;1&#xff09; cmake 有个 系统变量 CMAKE_ROOT 通常比如…

收获属于自己的果实

收获属于自己的果实 一个冬日的夕阳下&#xff0c;银杏树飘落的树叶像倦了的蝴蝶。在这棵银杏的对面有一个IT培训的基地。这里的老师“关爱”学生&#xff0c;学生刻苦努力的学习着&#xff0c;每一个来这里的人都是想着去往人生理想的方向前进&#xff01;他们不懈怠、不抱怨…

编译工具链的预定义编译宏选择(__CC_ARM、__ICCARM__、__GNUC__、_MSC_VER、__SUNPRO_C等)

一、正文 我们在看代码时&#xff0c;经常会看到形如__CC_ARM、__ICCARM__、__GNUC__、_MSC_VER等宏定义用来指示编译平台&#xff0c;含义如下&#xff1a; A __CC_ARM对应的平台是&#xff1a;ARM RealView&#xff1a;   RealView&#xff0c;是一套包含编译、调试和模拟…

关于宏的一点点发现

我们有的时候会使用#define int long long这样的写法。但是&#xff0c;有的时候却会出现问题。例如&#xff1a; #define int long long #include<cstdio> using namespace std; signed main() {return 0; }以上代码会出现编译错误&#xff0c;而如下代码则不会&#x…

编译和宏

编译和宏 编译可分为两个阶段&#xff1a;编译和链接 编译阶段进行语法检查 链接阶段将各个相互关联的模块拼接在一起 编译阶段 编译指令&#xff1a;g -c xxx.cpp 在编译阶段通过之后会生成后缀为.o的中间文件&#xff1b;通过命令nm -C xxx.o可以查看该文件的内容&…