赞
踩
1.编译器“内联函数开关”引起的错误:
近来使用GCC,"Hello,World"都进行的挺顺利,但是到编译自定义类时却问题多多。程序的目的是实现C++下的字符串类,非常简单,源文件有三个:
String.h //类定义的头文件
String.cxx //类实现文件
teststring.cxx //类测试文件
编译时反复出现“undefined reference to XXX”提示,经过参阅手册得知解决办法:
由于String.h所有函数在实现文件String.cxx中均显式声明为内联,根据g++编译的默认选项是-fno-keep- inline-functions,如果函数被内联,则不存在对函数的调用,编译程序将不生成函数体,因此虽然teststring.cxx中 include了相关函数的定义,但是找不到这些函数的实现,自然出现错误"undefined reference to XXX"。
修改该选项为-fkeep-inline-functions,则及时不存在对函数的调用,编译程序也会生成函数体,于是世界又清静了。
该方法改写于原文:http://hi.baidu.com/mizzletown/blog/item/ae049dd17a2d59d0562c848d.html
2.C++编译器的机制问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。