VS的符合模式选项

这里写自定义目录标题
参考https://bbs.csdn.net/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[]是可以更改的。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C99模式和GNU模式是用于指定编译器使用的语言模式选项。C99模式是指符合ISO C99标准的语言模式,而GNU模式是指GCC编译器的GNU方言的ISO C99模式。在Clang中,可以使用-std选项来指定使用的语言模式。如果未指定-std选项,则Clang默认使用的是GNU99模式,即GCC的GNU方言的ISO C99模式。\[1\] 引用\[2\]中提到,当GCC完全实现ISO C99标准时,GNU99模式将成为默认模式。而引用\[3\]中提到,在Linux系统下,使用gcc/g++编译器编译出来的二进制可执行程序,默认是release模式。如果要使用gdb调试,需要在生成二进制可执行程序时加上-g选项。所以,如果你想在Linux系统下使用C99模式或者GNU模式进行编译,可以使用Clang编译器,并通过-std选项指定相应的模式。 #### 引用[.reference_title] - *1* *2* [c99编译报错改用gnu99](https://blog.csdn.net/wteruiycbqqvwt/article/details/115486276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [< Linux >:Linux 环境基础开发工具使用 (3)](https://blog.csdn.net/lcc11223/article/details/127664380)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值