将gcc工程修改成g++工程问题一览

2018-02-11 14:04:00来源:oschina作者:悲催的古灵武士人点击

分享

因项目需要,将一个早期的gcc编译运行正常的c工程修改为g++,问题很多。


1 大量的类型不匹配


究其原因,g++是不允许不同类型指针互相赋值的,在出错位置加入强制类型转换即可。


2 部分变量was not declared in the scope


gcc下运行正常的代码,g++编译出错,原因为c++要求函数或变量在使用前必须要声明,具体问题具体分析即可。


3 initializer-string for array of chars is too long


定义的字符数组长度过短,而初始化的数组过长引起。gcc对数组宽容度很高。


4 types may not defined in sizeof expressions


工程中有这样的宏


#define kvec_t(type) struct { size_t n, m; type *a; }


使用时用sizeof(kvec_t(int)),在gcc下正常,g++报错


查找问题,g++下sizeof中用struct的语法是不合法的,该问题的解决办法是将struct重新定义成typedef的形式,siziof(struct_test)的形式。


5 uninitialized const


原因是工程中定义的全局常量数组未初始化 const unit8_t a[8]。


将其初始化即可。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台