You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;
}

修改说明

  1. 将str_length函数的参数从char*改为const char*:明确告知编译器该函数仅读取字符串内容、不会修改它,这样字符串常量就能安全传递,直接消除类型不匹配的错误。
  2. 添加#include <stdio.h>:代码中使用了printf函数,必须包含标准输入输出头文件,避免隐式声明的警告。

内容的提问来源于stack exchange,提问作者onix012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:55:21