繁体   English   中英

旧包中的C / C ++静态字符串

[英]C/C++ static string in old package

我有一个旧的C / C ++程序包,由于要使用Motif和其他X-东西,因此我试图用CygWin进行编译。 大多数都可以编译,但是由于类似...的行而有些警告。

静态字符串fallbackResources [] = {“ Joe”,..etc ..,NULL};

我收到编译器警告:不建议将字符串常量转换为'String {aka char *}'

我在Google上搜索,发现了很多建议,可以通过将出现的“ char * fred []”更改为“ const char * fred []”来避免此警告,这是我对软件包中大多数c ++文件所做的,并且效果很好删除编译器警告。

但是,我坚持使用“静态字符串”行,因为当我通过在“字符串”之前插入“ const”来更改它们时,没有什么区别,并且如果我将“字符串”更改为“ const char *”,警告会消失,但是程序不会由于稍后在将数组发送到另一个函数的地方出错而无法编译...。

无法将参数'7'的'const char *'转换为'char **'....

任何帮助将不胜感激。

谢谢大家,谷歌搜索更多并找到( https://stackoverflow.com/a/14648630/3100869)-答案似乎是使用const_cast这样的:

静态字符串fallbackResources [] = { const_cast( “ Joe” ,..etc ..,NULL};

...警告消失了!

问题是指针上有两个const级别:指针本身及其指向的内容。 char const *是指向const char的指针(从右到左读取),而char* const是指向char的const指针。

在您的情况下, String似乎是char*的typedef。 像您一样使该const变成一个char* const 您需要修复typedef。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM