就在五分钟前,当我点击 f5 并收到 102 个错误时一切正常:
error: C2440: 'initializing' : cannot convert from 'const char [17]' to 'char *'
Conversion from string literal loses const qualifier (see /Zc:strictStrings)
那个特定的在第 30 行:
char* hexchars = "0123456789ABCDEF";
我至少有一个星期没有碰过错误所在的文件了。我通常会说我不小心更改了编译参数或其他内容,但在它开始出错之前我还没有打开设置。
有什么想法吗?我一定是心不在焉地更改了一些设置,但我真的不记得当时在想“呃,哦,我刚刚做了什么?”
最佳答案
当你使用这样的代码时
char *astring2 = "some letters";
C++(和 C)将其放入只读存储器。您不能修改用文字初始化的 char 指针的内容,即使它不是 const。
此外,您不能更改指针的地址,因为根据上述规则,这会导致内存泄漏。
但是,除非您将其设置为常量,否则它不遵循该规则:
char astring[] = "some letters that can be changed";
char *ptrToString = astring; //work
astring2 = astring //not work
关于c++ - 无法从 'const char [3]' 转换为 'char *' x100000 (Qt Creator C++ Windows 32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244225/