参考https://bbs.youkuaiyun.com/topics/392456100
参考http://www.dengb.com/cjjc/1352000.html
项目属性->C/C+±>语言->符合模式选项的含义
/permissive-:启用所有严格标准符合性编译器选项,并禁用大部分特定于 Microsoft 的编译器扩展(但有一些例外,比如 __declspec(dllimport))。 在 Visual Studio 2017 15.5 版中此选项默认为开启状态。 /permissive- 符合性模式包括对两阶段名称查找的支持。有关详细信息,请参阅https://docs.microsoft.com/zh-cn/cpp/overview/cpp-conformance-improvements?view=vs-2017
上面的符合模式修改为否和/permissive的区别举例:
char *e = “abcd”; // /permissie模式下编译提示错误;
原因:
char*是历史遗留问题,如果程序修改了字符变量变量会有可能导致程序的崩溃,
2019版本的VS对此进行了严格控制,编译器会报错(C2440)
编译器错误C2440微软Visual Studio 2019官方文档如下图:
char*e = “abcd”;
这种指针定义之后是不可更改了,而使用new char[]是可以更改的。