3

我是 C 语言的新手,想知道是否有一个通用头文件可以包含在 main function 的顶部。在 Java 中,只需在 eclipse 中执行 ctrl+shift+o 并为您导入包非常简单。但是在 C 中,我每次都必须谷歌并添加它。有时,我什至不知道要包含什么库。非常感谢你 。

4

7 回答 7

3

没有通用标题,但您当然可以为您的应用程序制作一个,并将其包含在您的所有文件中。如果您不确定要为需要调用的函数包含哪个文件,可以man在 UNIX 上使用命令。例如,

man 3 printf

显示了这一点:

概要

#include <stdio.h>

int printf(const char * restrict format, ...);

如果您使用它足够长的时间,您通常会相对较快地记住函数到标题的“映射”。

于 2012-04-22T23:53:40.350 回答
3

没有一个包罗万象的标题。

除此之外,任何这样的 MS Windows 头文件对于 Unix 都是错误的,而任何这样的 Unix 头文件对于 Windows 都是错误的。即使在 Unix 上,通用头文件是否应该包含所有 X11 头文件?那么 OpenSSL 标头呢?POSIX 线程头呢?其他 POSIX 标头?

您需要了解在哪里可以找到您需要使用的任何给定功能的信息。在 Unix 上,经典资源是“手册页”(意思是“手册页”,通常使用“ -man”troff/nroff 宏包格式化)。这些天来,我倾向于使用网络:例如,我在 The Open Group 找到POSIX手册页。

(请注意,头文件与库是分开的;单个库中的函数可能使用许多头文件。请参阅标准 C 库作为说明。)

于 2012-04-22T23:55:12.010 回答
3

没有通用的标头——因为解析每个标头都需要时间,并且有数千个(如果不是数百万个)标头可用,因此无法将它们全部包含到每个编译单元中。你不会想要的,因为其中 99.9% 不会被使用,只会不必要地用静态分配使最终的可执行文件膨胀。

每个标准化函数都会告诉您需要在其联机帮助页顶部包含的标题;例如,来自malloc(3)

NAME
   calloc, malloc, free, realloc - Allocate and free dynamic
   memory

SYNOPSIS
   #include <stdlib.h>

   void *calloc(size_t nmemb, size_t size);
   void *malloc(size_t size);
   void free(void *ptr);
   void *realloc(void *ptr, size_t size);

因此,您需要#include <stdlib.h>在您的项目中,并且有原型供您查看。

如果您想快速查看联机帮助页,可以配置 IDE 以快速向您显示它们。Kin的默认键绑定vim是为光标下的函数加载手册页——但是,由于它使用默认的手册页搜索顺序,它有时会找到错误的页面。(printf例如,在 上,它会加载printf(1)而不是printf(3). 烦人。如果您愿意,可以使用中MANSECT描述的环境变量来更改此行为以在之前向您显示。)man(1)31

于 2012-04-22T23:55:58.207 回答
1

不。

我想您可以创建一个,但这会大大降低您的编译速度。一些 IDE 可能会帮助您找到包含文件。

于 2012-04-22T23:53:30.253 回答
1

您可以让 Eclipse 自动插入您经常使用的各种头文件。但是:如果您想学习 CI,建议您完成查找要包含哪些内容的工作。

就像所有的学习一样。边做边学——从重复中学习。

标准 C 库并没有那么大——头文件的命名很直观,并且有一个可管理的标准函数列表。

有一个这样的列表可用并阅读它。当您需要包含等时阅读它。

当你觉得你真的知道什么时候该包括什么时。自动化它。

于 2012-04-23T00:00:11.760 回答
1

您正在包含一个头文件,因为您使用的是头文件中定义的接口;不是因为有一套标准要包括在内。那么,你如何确定你需要什么接口呢?有两个基本选项:

  1. 查找头文件或头文件的描述并查看它们以了解接口,或者
  2. 使用“apropos search_term”或“man interface_function”。

作为初学者,选项#1 将是一个好的开始——查看/usr/include或找到一本名为“C 标准库”(或类似内容)的书。

于 2012-04-23T00:03:35.797 回答
0

一本好的参考手册(例如这个)将有一个附录列出所有库函数及其相关的头文件。您还可以查看在线C 语言标准第 7 章中的类似列表。

于 2012-04-23T00:50:21.233 回答