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

Oberon發表於2021-04-08

本文地址: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就不會執拗地把*往前放了。

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

相關文章