C++ 三斜杠注釋 是什麼意思?

Bullet物理引擎的代碼裡面很多地方用了三斜杠注釋。

我用的vs2017,三斜杠注釋和普通的雙斜杠注釋 顏色還不一樣,似乎不是普通雙斜杠後面加了一個無意義的斜杠。

搜索出來的也看起來不怎麼靠譜。

有人知道三斜杠注釋到底是幹嘛的么


Doxygen


其實很簡單,Bullet 使用了 Doxygen 來生成文檔,而 Doxygen 中可以通過 /// 來標明這條注釋會被用於文檔生成。當然,在正常編譯過程中這和普通的注釋都會被直接忽略。


三斜杠等於兩斜杠注釋開頭+一個斜杠注釋內容

至於這個內容會被什麼注釋文檔生成器識別,這和C++無關,C++編譯器看來這都是普通的注釋


從語法的角度說,就是//表示注釋開始之後,注釋內容里的第一個字元恰好也是/而已。從編譯器的角度來說是沒什麼關係的,語言本身也支持(反正整行忽略)。同理,三個四個五個六個或者一整行的那玩意兒都沒事兒。

但後來人們漸漸有了些約定,比如覺得一個函數聲明前,用///注釋一下,概述一下這個函數,需要傳入什麼參數啊,會返回什麼值啊,會比較好。再然後就有些工具軟體,會根據///後面的內容,自動生成文檔之類的。那visual studio 也就為了好看,順便幫你換個顏色了。


doxygen的格式


方便doxygen抽取注釋生成概述文檔。

///

//!

//?

-------------------

參考c++API設計9.4節

沒錯我剛讀到這裡就來顯擺了


在C++里三斜杠是沒有什麼特別意思的

但是在Cli,C#等語言中,三斜杠可以表示xml格式的注釋,可以直接導出xml,所以vs的對待方式不太一樣


vs中,使用三個/注釋可以用一個命令直接生成xml文檔,可以用作用戶的參考手冊或者說明書,當然,注釋格式要符合xml規範


有一些IDE遇見///會換個鮮亮的顏色而已


我也是新生,簡單的把這個認為就是注釋雙斜杠就ok


推薦閱讀:

如何評價2016年藍橋杯決賽?
為什麼要有指針?
C++中左值、右值與寄存器的關係是怎樣的?
C++里一個帶有返回值的函數在沒有return語句的情況下在GCC里編譯通過是否可看作GCC的bug?
C++中如何定義指向函數指針的指針?

TAG:編程 | C編程語言 | C | CC |