VS Code运行C代码报错:ISO C++禁止字符串常量转char*
解决方案
问题原因
字符串常量(如"-h=123"或"")是存储在只读内存中的字符数组,类型为const char[]。你的函数参数使用char*,试图将只读的字符串常量转换为可修改的指针,这种操作在严格编译规则下(比如启用-Wwrite-strings选项或按C标准编译)会触发错误——因为它存在意外修改只读内存的风险,被ISO C标准明确禁止。
修改后的代码
#include <stdio.h> int str_length(const char *mystring){ int i=0; for(i=0; mystring[i]!='\0'; i++); return i; } void alpha(){ printf("%d\n", str_length("-h=123")); printf("%d\n", str_length("")); } int main() { alpha(); return 0; }
修改说明
- 将
str_length函数的参数从char*改为const char*:明确告知编译器该函数仅读取字符串内容、不会修改它,这样字符串常量就能安全传递,直接消除类型不匹配的错误。 - 添加
#include <stdio.h>:代码中使用了printf函数,必须包含标准输入输出头文件,避免隐式声明的警告。
内容的提问来源于stack exchange,提问作者onix012
相关产品推荐
相关产品推荐

