如何在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
相关产品推荐
相关产品推荐

