宏展开的小技巧

简介:

 在阅读一些开源代码的时候,经常会看到一个宏定义动辄上百行,而且宏定义还层层嵌套,这对我们理解源代码的难度有点大。昨天一个同学问我有没有好的办法,想了一下这个问题,觉得有点思路,拿出来和大家分享一下。

    我们知道gcc在编译的过程中,依次进行:预处理,编译,汇编,链接。在每个过程中gcc会调用对应的工具,例如对于预处理,gcc会调用cpp,即c语言预处理器。具体的选项为-E。

    而宏定义的展开就是在预处理的过程中处理的,所以思路就是:将调用宏的那部分代码单独提取出来,使用:

    gcc -E file_name.c

    就可以将宏展开,这样看起来就不是很费劲了。



本文转自hipercomer 51CTO博客,原文链接:http://blog.51cto.com/hipercomer/810528

相关文章
|
存储 安全 算法
一文搞懂PKI/CA
一文搞懂PKI/CA
2990 0
一文搞懂PKI/CA
|
4月前
|
存储 NoSQL C语言
GDB学习整理
GDB(GNU Debugger)是一款功能强大的调试工具,用于调试C、C++等程序。它允许开发者启动程序、设置断点、单步执行、查看和修改变量值、检查调用栈(stack frame)等。用户可通过命令行操作GDB,常用命令包括:`run` 启动程序、`break` 设置断点、`next` 单步执行、`continue` 继续执行、`print` 打印变量值、`quit` 退出GDB。GDB还支持初始化文件(如`.gdbinit`),可在启动时自动加载配置或脚本。通过断点条件、监视点、回溯(backtrace)等功能,开发者能高效排查程序错误。
209 0
|
人工智能 安全 Cloud Native
|
关系型数据库 MySQL PostgreSQL
性能优化特性之:code_hugepage - 代码大页
本文介绍了倚天实例上的内存优化特性:代码段大页,并从优化原理、使用方法、性能收益进行详细阐述。
|
存储 安全 算法
公钥基础设施(PKI)的核心概念详解
【8月更文挑战第31天】
2321 0
|
Linux 数据处理 vr&ar
Linux下的ranlib命令:静态库文件的索引生成器
`ranlib`是Linux用于加速静态库(.a文件)链接的工具,它生成索引以优化查找目标文件。当链接器处理静态库时,索引能快速定位目标,提升效率。命令如`ranlib libexample.a`创建索引。注意,新工具链可能已自动包含此功能,使用前应确保库文件未含索引,避免重复生成。
在 Win 11 中添加小鹤双拼
在 Win 11 中添加小鹤双拼
691 0
|
C++
c++ unordered_map4种遍历方式
c++ unordered_map4种遍历方式
666 0