GCC编译警告选项的学习

GCC编译警告选项的学习

GCC有很多的编译选项,警告选项;指定头文件、库路径;优化选项。本文针整理一下GCC的警告选项,主要依据http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html文档,并加上自己的一点小小经验。

继续收集gcc一些编译警告

继续收集gcc一些编译警告

大约半年前,写了篇关于gcc编译警告的文章,因为忍受不了当时做的项目的刷屏式的编译警告。没想到,现在又要进行此事。因为当前的代码分支实在太多,而且又各自为政,没法通用——与当初重构的初衷已背离,当然,这是架构师要做的事,即使公司现在正在推行“匠心精神”,我还是没权力和能力想去推架构。所以,注定是一个修正几年前代码遗留warning的小弟。在修正过程中,真正认为到代码编写的重要性。这份庞大的代码我只贡献不到2%吧,但还是好好总结一下,以免自己日后再犯。

一个可变参数类型检查的示例

一个可变参数类型检查的示例
最近在修正代码警告,发现封装的打印语句不会进行参数的类型检查,而用printf却是可以的。于是上网找了下资料,学习了一下。 对于函数参数类型的检查,在gcc环境中可以使用__attribute__((format(printf,N,M)))的形式。其中N表示第几个参数是格式化字符串,M指明从第几个参数开始做检查。对于__attribute__,等有空专门学习一下再写篇文章出来。 下面是可变参数f的一个简单例子: void my_printf(const ch...

遇到一个gcc编译器版本导致的运行结果有差异的问题

遇到一个gcc编译器版本导致的运行结果有差异的问题

正在进行的项目中有个网络模块,需要在上位机将数据包加密,然后在设备端将数据包解密。两者使用的加密方法是可逆的(大概是异或之类的)。在我测试时,发现设备上解出来的数据不正常,得不到上位机未加密前的数据。因为这个模块在其它项目一直使用,一直OK,现在出问题了,很郁闷。而且该模块嵌入到其它大的功能模块,后来将加密、解密模块独立出来测试。当定位到解密这个点上,都已经过了大半天了。

gcc-2.95.3安装过程

gcc-2.95.3安装过程

背景交待:
1、正在研究ld、栈帧相关的东西;
2、使用高版本编译器得到的添加了诸多内容,不适合研究;
3、gcc的2.95.3版本并不是最低的,但它很经典,也当怀念一下吧;
4、安装低版本gcc实属研究、兴趣所致,与实际开发并无联系。

gcc及doxygen的安装过程

gcc及doxygen的安装过程

这几天捣鼓了doxygen,就是从源代码生成程序文档的工具,为了让gcc支持utf8编码,又下载一个比较高版本的gcc,测试通过。
另外,我的系统中已经安装有了doxygen,但还是重新下载一个新版本,再次测试。我想,也只有我这种人才会做这种事了。无论如何,还是能学到一些东西的。
我下载的gcc版本是4.4.5——因为据说4.4.0以上的gcc就已经支持utf8了,我就随便选择一个来安装。