就在五分钟前,当我点击 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)