2012-03-19 44 views
1

我在http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01618.html看的libstdC++文檔,並發現它設置在「模塊」,如算法,字符串等什麼是C++模塊,它們與命名空間有什麼不同?

我有多個問題

  1. 由於這是從doxygen的,自動生成的文檔,其libstdC++源代碼或配置文件的一部分,使doxygen「意識到」不同的模塊及其內容/依賴關係?

  2. 什麼是模塊,它與命名空間有什麼不同。

  3. 我做了一個谷歌搜索C++模塊,發現模塊是由「export modulename」定義的,但我在libstdC++源代碼中找不到任何導出定義。上述文檔中的「模塊」一詞是否指的是與出口不同的結構?

  4. 開發人員通常會將他們的源代碼分成大型項目的模塊嗎?

  5. 我在哪裏可以學習模塊,這樣我可以安排我的源代碼轉換模塊和命名空間

回答

2

它看起來像我碰到了兩個完全分開的事情,碰巧使用相同的名字。

您在文檔中看到的「模塊」似乎只是算法的事後分類等。可能有爭議的是,它們應該與命名空間密切相關,但在標準庫的情況下,基本上所有東西都在一個巨大的命名空間中。如果從一開始就使用命名空間進行設計,它可能不是那種方式,但事實並非如此。在任何情況下,分類都適用於文檔,而不適用於代碼本身。生成類似文檔的其他人可能會決定將其分成不同的模塊,但仍不會影響代碼。

在C++ 11標準化工作中,有人建議將其他名稱(也由名稱模塊執行)添加到C++語言本身。此提案已被刪除,主要是爲了儘快完成標準。後者與名稱空間有很大不同,並且使用「export」作爲模塊名稱。儘管這已經過去了(至少現在是這樣),所以在這裏我不會詳細討論它。如果你很好奇,你可以閱讀Daveed Vandervoorde's paper

+0

Thanks @Jimm - 我更新了鏈接。 – 2012-03-19 04:39:31

+0

此建議已被刪除,主要是爲了儘快完成「標準」。原型編譯器的概念也有可憐的表現。 :) – NoSenseEtAl 2012-06-11 16:01:28

+1

@NoSenseEtAl:概念與模塊完全分開。 ConceptGcc的表現糟糕透頂,但這是一個很快的黑客 - 沒有理由相信通常添加概念會導致糟糕的編譯器性能(Doug Gregor,ConceptGcc目前正在研究CLang;我猜想概念某些時候會有更好的表現)。 – 2012-06-11 16:24:54

2

你的文檔中看到Doxygen的創建和是不是C的一部分模塊++。使用\ ingroup Doxygen命令將libstdC++庫中的某些類組合到模塊中。

有關在Doxygen中創建模塊/組的更多信息,請參閱:http://www.stack.nl/~dimitri/doxygen/grouping.html

相關問題