【Visual Studio調教小記錄】C++指針靠前靠後??

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

甜鹹之爭

常常寫C++的基本上避不開使用指針,並且C++中指針類型的寫法大致上有兩種:編輯器

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

都是聲明一個指針。工具

關於哪一種寫法的傾向性,每一個人都不太同樣,有的往前放,有的日後放,還有的👴愛放哪放哪,你管得着嘛。指針

《C++ Primer》中推薦靠後,緣由是:code

int *a,b,c; // a是指針,b和c都不是
int* a,b,c; // 同樣,但容易引發誤會,讓人誤覺得b和c是指針,實則否則

不過用Visual Studio寫C++的時候,格式化方式又有所不一樣,當你敲完int*a=nullptr;後會靠前,會變成int* a=nullptr;,其緣由可能是隔壁的C#只容許往前放的寫法:orm

//C#代碼
unsafe ...
{
	int* a,b,c; 	// a,b,c都是指針
	int *a,*b,*c; 	// 錯誤!不讓這麼寫。
}

我卻是不關心C#怎麼寫,可是在C++的語境下,我贊同《C++ Primer》的觀點,喜歡日後放,可是VS就像個傲嬌同樣,分號一敲完就把我剛寫好的int *a變成了int* ahtm

難道甜和鹹就不共戴天了麼??

固然不是,對於C++代碼,VS默認狀態下使用的是Clang-Format方案。
Clang-Format將這個問題稱爲指針對齊,使用PointerAlignment設置,其實據說Clang默認是Right的。不過在Clang-Format配置文件中VS默認將PointerAlignment置爲Leftblog

固然,咱們倒不必把VS的Clang-Format配置文件拎出來暴打一頓塞回去,VS其實容許咱們手動設置這個風格,步驟以下:開發

  1. 菜單欄→工具→選項,打開選項窗口 image
  2. 左側搜索「格式」而後找到箭頭所指的項(或者在左側直接按樹找文本編輯器→C/C++image
  3. 依次往下找,代碼樣式→格式設置→間距,而後在右側找運算符的間距→指針/引用對齊方式下面有四個選項,你就能夠設置成你prefer的方式,而後在下面看預覽效果觀察*&的位置,肯定就行了 image

這樣,VS就不會固執地把*往前放了。get

相似地,關於其餘運算符的設置方法也能夠在這個上下文中進行,所以這個位置值得記錄一下,畢竟恰當設置能夠提高開發效率,這個設置的位置又比較隱蔽容易迷路,因此特此記錄一下。

相關文章
相關標籤/搜索