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

如何在Visual Studio 2019中允许C++旧项目的类型转换

问题描述

维护一个已通过某系统认证的旧C++应用程序,不允许修改任何代码,在Visual Studio 2019中重新构建时,遇到大量类型转换错误,示例代码及错误如下:

void sendMsg(char* msg)
{
    // code
}

int main()
{
    sendMsg("hello");
}

[活动错误 E0167:类型为"const char*"的实参与类型为"char*"的形参不兼容。]

请问Visual Studio中是否有相关设置可以允许此类类型转换?

解决方案

Visual Studio 2019提供了对应设置来允许这种字符串字面量到char*的隐式转换,具体操作如下:

  • 通过项目属性图形界面设置
    右键目标项目 → 选择「属性」→ 依次展开「配置属性」→「C/C++」→「语言」→ 找到「严格字符串类型检查」选项,将其设置为「否」(对应编译器开关/Zc:strictStrings-)

  • 直接添加编译器开关
    若图形界面设置不生效,可进入项目属性 →「配置属性」→「C/C++」→「命令行」,在「附加选项」中输入/Zc:strictStrings-后点击确定。

该设置会关闭C++11及后续标准中对字符串字面量的严格类型检查,兼容旧代码里允许const char*隐式转换为char*的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:45:26