问题解决error: deprecated conversion from string constant

290阅读 0评论2017-04-24 wzzushx
分类:LINUX

error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]问题解决
最近写了1份cpp代码,在低版本的32位机器上,没有问题;
但放到高版本64位机器运行就抱错
error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
cc1plus: all warnings being treated as errors
这个反馈很奇怪,检查代码,把所有可能的字符串类型,全部加上(char*)强制转换搞定。
究其原因,C++对参数类型有了更严格的校验,常量const类型,是不允许被修改的,所以,将常量当作变量传递参数,就会出现这个告警错误。
而C在这方面要求相对比较松。

低版本的32位机器上
Linux version 2.6.18-194.el5PAE (--@x86-007.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 22:00:21 EDT 2010
 gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)
Copyright (C) 2006 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。

高版本64位机器
Linux version 3.10.0-121.el7.x86_64 (--@x86-021.build.eng.bos.redhat.com) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Tue Apr 8 10:48:19 EDT 2014
gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
上一篇:Linux中内存buffer和cache的区别
下一篇:浅析Linux的共享内存与tmpfs文件系统