2010-09-20 56 views
3

懺悔:我是一個新手。關於stdio.h

問題:我正在檢查stdio.h,但我找不到fopen函數的定義。有人可以告訴我在哪裏可以找到定義?

關於,

錯誤。

+0

什麼編譯器和操作系統正在使用? – Anycorn 2010-09-20 07:24:24

+0

你的意思是fopen函數的'聲明'嗎? – Bill 2010-09-20 07:30:22

+0

os:mac os x 10.5.8; gcc 4.0.1 – babon 2010-09-20 08:55:20

回答

2

如果您使用UNIX或Linux,你可以找到它:

man fopen 

否則,只是谷歌man fopen,你會發現它。

幾乎所有的標準庫函數都可以使用man

+0

這不是他正在尋找的答案。他希望在stdio.h中找到定義fopen函數的那一行。 – 2010-09-20 07:30:17

+0

這不是他所說的。他問,「*有人可以告訴我在哪裏可以找到定義?*」 – 2010-09-20 08:30:03

2
extern FILE *fopen (__const char *__restrict __filename, 
        __const char *__restrict __modes) __wur; 

如您所說,在stdio.h

+0

'stdio.h'可能位於哪裏? – 2010-09-20 07:25:25

+0

在UNIX系統上,位於'/ usr/include'中。 – 2010-09-20 07:26:25

0

或者,你可以去http://cplusplus.com/下參考 - > C庫 - > cstdio(stdio.h中)

+1

這是stdio.h的參考,但它沒有回答這個問題,'我在哪裏可以找到fopen的定義'。他正在瀏覽源代碼,試圖找到一行代碼。 – 2010-09-20 07:31:33

3

聲明應該是在stdio.h(據我所知標準要求這一點),但它不是可能你會在那裏找到定義 *。如果您使用的是開放源碼操作系統,則可能包含包含可下載的源代碼(包含定義)的軟件包。否則,對不起,沒有可用的定義。

*假設筆者認爲定義意味着實際執行,而聲明而是指函數原型

+0

即使在Windows上,如果安裝了Visual Studio,CRT的源代碼也可用。例如,可以在'C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ crt \ src \ fopen.c'或類似文件中找到'fopen'的源代碼。 – 2010-09-20 08:46:54

+0

你是對的,但我認爲你只有在購買VS時才能得到它,不是嗎?還是可以在Express版本中使用? – stijn 2010-09-20 11:52:08

0

我發現源代碼here.我不是一個C-編碼器,以便檢查結果自己。據我所知,它看起來像一個真正的實現。但即使這不是「真正的」實施,它至少可以爲學習眼睛提供一些後驗。所以知道這個文件應該很有幫助。

0

fopen()爲OS X(這是提問者所問的問題)的實施可以用opensource.apple.com:

http://opensource.apple.com/source/Libc/Libc-498.1.7/stdio/fopen-fbsd.c

我很好奇,但是,作爲你爲什麼要找它;圖書館的一個重點是你不需要知道他們如何工作的細節以便有效地使用它們 - 你只需要知道如何與他們聯繫以及定義了什麼功能。