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.菜單欄→工具→選項,打開選項窗口

2.左側搜索“格式”然後找到箭頭所指的項(或者在左側直接按樹找文本編輯器→C/C++

3.依次往下找,代碼樣式→格式設置→間距,然後在右側找運算符的間距→指針/引用對齊方式下面有四個選項,你就可以設置成你prefer的方式,然後在下面看預覽效果觀察*&的位置,確定就好瞭

這樣,VS就不會執拗地把*往前放瞭。

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

到此這篇關於Visual Studio C++指針靠前靠後的全面解析的文章就介紹到這瞭,更多相關Visual Studio C++指針內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!