C的头文件中的函数体在哪里

时间:2011-01-27 07:49:40

标签: c function header-files

当我查看C(或C ++)的头文件文件时 例如 stdio.h中 有一些功能的定义 例如

_CRTIMP FILE* __cdecl __MINGW_NOTHROW fopen (const char*, const char*);
_CRTIMP FILE* __cdecl __MINGW_NOTHROW freopen (const char*, const char*, FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fflush (FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fclose (FILE*);
/* MS puts remove & rename (but not wide versions) in io.h  also */
_CRTIMP int __cdecl __MINGW_NOTHROW remove (const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW rename (const char*, const char*);
_CRTIMP FILE* __cdecl __MINGW_NOTHROW tmpfile (void);
_CRTIMP char* __cdecl __MINGW_NOTHROW tmpnam (char*);
你能告诉我吗? 那些体的功能在哪里.....

2 个答案:

答案 0 :(得分:3)

通常情况下,正文位于同名文件中,但以.c.cpp结尾。

有时您没有源代码,因此请查找.o,其中包含库的目标代码,即编译库。然后,头文件是一种API描述。

stdio.h等特殊情况下,这些文件是标准库的一部分,这些文件的位置是特定于实现的。事实上,这些文件的存在也是特定于实现的 - 我相信编译器可能会选择提供这些信息,但是它很乐意这样做。

答案 1 :(得分:3)

正常情况下,正如@Daren Thomas所说,你将拥有与黑客(.h文件)相匹配的.c文件。但是,关于标准库,这些c文件经过预编译并放在一个大文件中(例如,libc.so),可以在Windows的编译器的lib文件夹中找到,也可以在/ usr / lib文件夹中找到在Unix / Linus OS中。

对于g ++,libc库用作标准库。您可以从这里下载软件包:

http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.gz

...并浏览所有功能的源代码。