[实践OK]warning:deprecated conversion from string constant to 'char *' 解决方案

jackxiang 2015-4-9 14:22 | |
背景:之前大学学习过c语言,后来上班后学习并以php工作了几年,近来对纯c语言感兴趣,于是学习并试着用c语言编写并编译一个简单的内存指针池小程序发现有warning,multipepollserver.cpp:648: warning: deprecated conversion from string constant to ‘char*’,于是查了下是这样解决的,作一下学习并备案。
原来是:
void saveUpedFilePartInfo2Mem(upFilePart* filePart,const char* guid,unsigned int partIndex,char* httpHeader,char* httpBody,unsigned int httpBodyLen,char* uploadTime)
修改为:
void saveUpedFilePartInfo2Mem(upFilePart* filePart,const char* guid,unsigned int partIndex,const char* httpHeader,const char* httpBody,unsigned int httpBodyLen,const char* uploadTime);//存一个分片>信息到内存池里去                                                                                                                                                                      

———————————————————————为什么要加const修饰实现没有警告—————————————————————————

Linux 环境下当GCC版本比较高时,编译代码可能出现的问题

问题是这样产生的,先看这个函数原型:

再看这个函数调用:


把这两个东西组合起来,用最新的g++编译一下就会得到标题中的警告。
为什么呢?原来char *背后的含义是:给我个字符串,我要修改它。

而理论上,我们传给函数的字面常量是没法被修改的。

所以说,比较合理的办法是把参数类型修改为const char *。

这个类型说背后的含义是:给我个字符串,我只要读取它。

如何同时接收const类型和非const类型?重载

结果
[root@test hello]# g++ helo.cpp
[root@test hello]# ./a.out
hello 123
hello 123
摘自:http://www.cnblogs.com/kaituorensheng/p/3575403.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/7947/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2015-4-9 14:26
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]