怎么知道,头文件里面有什么?

时间:2014-05-07 13:27:13

标签: c header-files

我想知道stdio.hconio.h等内部是什么。 我想知道如何定义printfscanf

有没有办法可以打开stdio.h,看看里面写的是什么?

6 个答案:

答案 0 :(得分:3)

根据您的实现,您应该可以在您喜欢的编辑器中打开任何.h文件并直接阅读;它们(通常)只是纯文本文件。

但是,stdio.h只会为printfscanf提供声明;它不会包含它们的源代码。大多数编译器不提供标准库函数的源代码;相反,它们发布预编译库,这些库在构建可执行文件时与您的代码链接。

如果你愿意花钱,P.J Plauger的The Standard C Library是一个很好的资源,可以显示标准库函数的实现。

答案 1 :(得分:0)

这些标题通常包含更多的机器/操作系统特定标题。

如果您使用的是Linux / OS X,那么可以使用

获取更多信息
man stdio

另请查看http://www.cplusplus.com/reference/cstdio/ https://en.wikipedia.org/wiki/Conio.h

答案 2 :(得分:0)

当预处理器在源文件中包含头文件时,该包含非常直观。这意味着头文件是包含源代码的普通文本文件,并且必须由编译器可读(因此您也可以)。您只需找到它们的位置,就可以像打开任何其他文本文件一样打开它们。

但是,您无法了解定义的功能,以及声明的方式。有些结构应该是"黑盒",其数据成员应该被视为私有。通常,标准C库的源代码是可用的或可下载的,因此请尝试查找。这完全取决于您使用的编译器。

您可能还想查看参考网站such as this one。你可以在那里找到有关例如printf

答案 3 :(得分:0)

大多数编译器允许您在预处理器(处理#include指令的编译步骤)运行后读取结果。例如,使用gcc,使用-E命令行选项。

你总是可以依靠互联网提供的Unix风格的手册页,通过搜索" man something"您可以查找相关的手册部分。

例如,printf()scanf()都有页面。

您可以很容易地看到声明并不是非常特殊,而且从使用方面来看非常明显。例如,它只是int printf(const char *format, ...);

答案 4 :(得分:0)

某些标题的内容由C-Standard定义。 其他标头由提供它的库定义。 从系统中为您编写代码定义了一些头文件(可能属于第二种情况,因为操作系统提供了库)

取决于您可能会查看c语言参考,或者您可以查看库手册或OS的API参考。

但有一个是肯定的。如果你可以包含一个标题(并且编译器不会抱怨他找不到它),那么你也可以查看它。只需查看编译器的标准包含目录或项目文件ore Makefile中指定的其他包含目录,以查找文件系统上的文件。

但通常更好的方法是查看文档,因为标题本身可能难以阅读,因为许多#ifdefs并且还包括

答案 5 :(得分:0)

找出这些标题中的内容的最基本方法是读取它们。当然,您必须先找到它们。为此,您可以使用以下简短的shell代码:

gcc -E -M - << EOF
#include <stdio.h>
EOF

这将为您提供#include <stdio.h>直接或间接包含的所有标题的完整列表。当然,如果你只对'stdio.h&#39;感兴趣?标题本身,你可以做到

locate stdio.h

但这通常会列出一些误报。