2010-11-14 33 views
5

當我使用#include編寫程序時我在哪裏可以看到C++標準庫中使用的代碼?

我在哪裏可以看到該文件的內容,並且由於該文件包含聲明,哪裏可以看到這些函數中使用的實際代碼?

是向所有人開放還是不向公衆開放?

+1

標準庫沒有一個實現。您可以通過在您的系統上搜索標題來找出實施的標題。很可能他們都在一個地方。 – 2010-11-14 00:48:02

+1

已標記* osx * per fmunshi對doron問題發表評論。 – 2010-11-14 00:52:01

+1

好的,Mac,你使用的是什麼編譯器/ IDE? – pinkfloydx33 2010-11-14 01:00:27

回答

1

如果您使用類似Visual Studio的東西,您可以放置​​一個斷點,然後逐行地逐行掃描您的代碼,並隨着您的行爲打開包含的文件。在我看來最快的方式進入一個文件。否則,你可以找到你的電腦上的代碼......在我的C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\ostream例如,用iostream,sstream等替換ostream(注意這些是沒有擴展名的文件名),但是如果你看看你的目錄看到很多.h和.c文件

1

所有系統頭文件都隨您的編譯器提供。在Linux系統上,這些通常可在/usr/include下找到。在其他平臺上,通常會安裝在您安裝編譯器的地方。

商業圖書館通常不會發布源代碼。在Linux上,這些通常可以在源代碼包中找到。

+0

怎麼樣在mac上,我可以在哪裏找到源包 – fmunshi 2010-11-14 00:51:35

2

這取決於你使用的是什麼工具鏈,並不是每個供應商都公開他的實現。你可以看看GNU C庫的初學者:http://www.gnu.org/software/libc/

Dinkumware,在Visual Studio中使用的C++標準模板庫背後的例子是提供一個商業產品,因此代碼不可用每個人 - 這真的取決於你的許可證。某些版本的Visual Studio確實附帶了運行時的源代碼。

至於STL,還有一個開源的STL實現STLport

你最好的選擇確實是gcc/g ++所依賴的項目。

3

#included文件通常是可讀的,但它實現的庫通常是不可讀的。 Mac上的包含文件位於/usr/include/C++

庫代碼依賴於編譯器。對於在linux和Mac中使用的Gnu C++,您絕對可以看到代碼。您可能需要下載它。它可在http://gcc.gnu.org/libstdc++/

我不認爲Windows C++庫代碼可用。

+0

我正在使用mac,所以我在哪裏可以看到代碼 – fmunshi 2010-11-14 00:49:07

+0

fmunshi:回答了你關於mac的問題,改編我。 – 2010-11-14 01:06:25

2

C++標準本身只是這樣的:一個標準。其實施由許多供應商完成。 STLport和GNU libstdC++都是開源的,可以作爲一個整體來看待。 Visual Studio附帶Dinkumware C++標準庫。它是封閉的來源。

不過,通過打開C++標準lib的include目錄,您總是可以看到標題的來源。這些文件就像您包含它們一樣命名。無論如何,它的大部分都是在頭文件中實現的。但對於未經訓練的眼睛來說,這幾乎是無法讀懂的。

但是,當涉及到使用C++庫不依賴於它的確切源代碼,而是依賴於C++標準所說的。不要編程到實現,而是編程到標準。

1

運行從你的命令行命令:

find /usr -name iostream 

,將告訴你你想要的目錄。

+0

非常感謝,它的工作! – fmunshi 2010-11-14 01:15:21

相關問題