logo
Korbin's blog
logo
Korbin's blog

一些 gcc 技巧

打印 gcc 预定义的宏信息
打印 gcc 执行的子命令
打印优化级别的对应选项
打印彩色诊断信息
打印头文件搜索路径
打印连接库的具体路径
生成没有行号标记的预处理文件
在命令行中预定义宏
在命令行中取消宏定义
把选项传给汇编器
生成有详细信息的汇编文件
利用 Address Sanitizer 工具检查内存访问错误
利用 Thread Sanitizer 工具检查数据竞争的问题
把选项传给连接器
设置动态连接器
禁止函数被优化掉
强制函数永远以 inline 的形式调用
error: cast from ... to ... loses precision
all warnings being treated as errors
只做语法检查
保存临时文件
打开警告信息
指定语言类型
改变结构体成员的字节对齐

#禁止函数被优化掉

#例子

#if (GCC_VERSION > 4000) #define DEBUG_FUNCTION __attribute__ ((__used__)) #define DEBUG_VARIABLE __attribute__ ((__used__)) #else #define DEBUG_FUNCTION #define DEBUG_VARIABLE #endif DEBUG_FUNCTION void debug_bb (basic_block bb) { dump_bb (bb, stderr, 0); }

#技巧

上面的例子是 gcc 的源码。使用 gcc 的扩展功能——函数属性__attribute__ ((__used__)),可以指定该函数是有用的,不能被优化掉。

详情参见gcc 手册

#贡献者

xmj

上一篇设置动态连接器
下一篇强制函数永远以 inline 的形式调用