本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14631149.html

甜咸之争

经常写C++的基本上避不开使用指针,而且C++中指针类型的写法大体上有两种:

int* a = nullptr; //*靠前
int *b = nullptr; //*靠后

都是声明一个指针。

关于哪种写法的倾向性,每个人都不太一样,有的往前放,有的往后放,还有的爱放哪放哪,你管得着嘛。

《C++ Primer》中推荐靠后,原因是:

int *a,b,c; // a是指针,b和c都不是
int* a,b,c; // 一样,但容易引起误会,让人误以为b和c是指针,实则不然

不过用Visual Studio写C++的时候,格式化方式又有所不同,当你敲完int*a=nullptr;后会靠前,会变成int* a=nullptr;,其原因可能是隔壁的C#只允许往前放的写法:

//C#代码
unsafe ...
{
int* a,b,c; // a,b,c都是指针
int *a,*b,*c; // 错误!不让这么写。
}

我倒是不关心C#怎么写,但是在C++的语境下,我赞同《C++ Primer》的观点,喜欢往后放,但是VS就像个傲娇一样,分号一敲完就把我刚写好的int *a变成了int* a

难道甜和咸就不共戴天了么??

当然不是,对于C++代码,VS默认状态下使用的是Clang-Format方案。

Clang-Format将这个问题称为指针对齐,使用PointerAlignment设置,其实听说Clang默认是Right的。不过在Clang-Format配置文件中VS默认将PointerAlignment置为Left

当然,我们倒没必要把VS的Clang-Format配置文件拎出来暴打一顿塞回去,VS其实允许我们手动设置这个风格,步骤如下:

  1. 菜单栏→工具→选项,打开选项窗口
  2. 左侧搜索“格式”然后找到箭头所指的项(或者在左侧直接按树找文本编辑器→C/C++
  3. 依次往下找,代码样式→格式设置→间距,然后在右侧找运算符的间距→指针/引用对齐方式下面有四个选项,你就可以设置成你prefer的方式,然后在下面看预览效果观察*&的位置,确定就好了

这样,VS就不会执拗地把*往前放了。

类似地,关于其他运算符的设置方法也可以在这个上下文中进行,因此这个位置值得记录一下,毕竟恰当设置可以提升开发效率,这个设置的位置又比较隐蔽容易迷路,所以特此记录一下。

【Visual Studio调教小记录】C++指针靠前靠后??的更多相关文章

  1. 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合

    title: 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合 date: 2020-06-28 sidebarDepth: 2 tags: win ...

  2. 【调试】Visual Studio 调试小技巧(2)-从查看窗口得到更多信息(转载)

    在使用Visual Studio开发调试程序时,我们经常需要打开查看窗口(Watch)来分析变量.有时在查看窗口显示的内容不是很直观.为了能从查看窗口的变量中得到更多的信息,我们需要一些小的技巧.下面 ...

  3. 11个强大的Visual Studio调试小技巧

    简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...

  4. 11个强大的Visual Studio调试小技巧(转)

    简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...

  5. Visual Studio Code 学习记录

    Visual Studio Code的官方文档可以学到很多知识,不只是vs code的用法,包括一些语言的入门 和一些概念等等.很好的文档. ※,user.settings.json中的一些配置说明: ...

  6. 设置visual studio的小技巧

    设置 Visual Studio 方法 1.设置关闭快捷键 Ctrl + W:关闭当前文档窗口 Ctrl + Q:关闭所有文档窗口 设置方法:工具-->选项-->键盘:在显示命令包含中输入 ...

  7. Visual Studio实用小技巧

    有一个有关微软Office的笑话,说的是它的特性太多: 当你觉得自己发现了一个Office的新特性时,它已经存在很多年了. 本文将介绍一些在Visual Studio(免费下载)中很实用却被忽略的小技 ...

  8. visual studio 一些小技巧 整理

    本博客将会陆续的整理一些作者在实际开发中的一些小技巧,一些挺有意思的东西,将会持续更新, 如果有问题,可以加群讨论,QQ群:592132877 #warning的使用 #warning 的意思是在程序 ...

  9. vc2005(visual studio)使用习惯记录

    来源:http://blog.csdn.net/zdl1016/article/details/6184549 前言:sourceinsight不支持显示utf-8的文件, 实在是一大遗憾!vim现在 ...

随机推荐

  1. JavaScript Inheritance All in One

    JavaScript Inheritance All in One constructor inheritance prototype chain inheritance "use stri ...

  2. go语言第一天(变量与基本类型)

    第一个go程序: //导入主函数的包package main//fmt format 包含格式化输入输出import "fmt"//注释 注释不参与程序编译 可以帮助可以程序//行 ...

  3. Java volatile 关键字底层实现原理解析

    本文转载自Java volatile 关键字底层实现原理解析 导语 在Java多线程并发编程中,volatile关键词扮演着重要角色,它是轻量级的synchronized,在多处理器开发中保证了共享变 ...

  4. VUE实现富文本编辑以及组件传值的使用总结

    VUE实现使用富文本编辑,如下图: 实现这个富文本编辑需要以下步骤: 第一步:安装编辑器组件 npm install vue-quill-editor –-save第二步:创建一个Ue.vue的文件, ...

  5. SpringBoot2.2.5整合ElasticSearch7.9.2

    1:前言 为什么是SpringBoot2.2.5,不是其他的SpringBoot版本,原因有两个: 1:SpringBoot2.2.0以上才能支持ElasticSearch7.x版本. 2:Sprin ...

  6. CentOS7安装ZooKeeper3.4.14

    1:下载安装包 wget https://downloads.apache.org/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 点击进入官网下 ...

  7. docker ssh秘钥免密登录

    一.概述 有一台跳板机,已经实现了免密登录后端服务器.但是我写了一个django项目,它是运行在容器中的,也需要免密登录后端服务器. 虽然可以在容器中手动做一下免密登录,但是容器重启之后,之前做的设置 ...

  8. Jmeter的脚本参数化

    一.变量 Jmeter中的变量用法:${变量名称} 变量定义:两种 1.用户定义变量 User Defined Variables 2.用户参数  User Parameters 1.1用户定义变量 ...

  9. GDB调试:从入门到入土

    GDB是类Unix操作糸统下使用命令行调试的调试软件,全名GNU Debugger,在NOI系列竞赛使用的NOI Linux系统中起很大作用(如果不想用毒瘤Guide或直接输出)(XXX为文件名) 1 ...

  10. 关于使用C3P0程序报错Having failed to acquire a resource, com.mchange.v2.resourcepool的问题

    由于是新手的问题,C3P0的使用时严格跟着视频来的,但是问题却来的很突然 在导入了三个包以及创建了路径以后 进行测试 class JdbcutilsTest { @Test void TestGetC ...