【Visual Studio调教小记录】C++指针靠前靠后??

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

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

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

posted @   Oberon  阅读(1786)  评论(4编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目
点击右上角即可分享
微信分享提示