为什么我们要在C中包含头文件
为什么我们要在C中包含头文件为什么我们要在C中包含头文件,c,C,为什么我们要在C中包含头文件 我无法理解在C语言中添加头文件的必要性。我的意思是,如果我不使用头文件,将会发生什么情况实际上不需要使用头文件。它们避免了在每个源文件中包含所有正在使用的函数的定义。头文件只不过是在使用include的位置插入它们的内容。如果您愿意,您可以自己编写所有这些内容。实际上不需要使用它们。它们避免了在每个源文件中包含所有正在使用的函数的定义。头文件只不过是在使用include的位置插入它们的内容。如果愿意,您可以自己编写所有这些内容。来自其他头文件的声明在该文件中不可见,
我无法理解在C语言中添加头文件的必要性。我的意思是,如果我不使用头文件,将会发生什么情况实际上不需要使用头文件。它们避免了在每个源文件中包含所有正在使用的函数的定义。头文件只不过是在使用include的位置插入它们的内容。如果您愿意,您可以自己编写所有这些内容。实际上不需要使用它们。它们避免了在每个源文件中包含所有正在使用的函数的定义。头文件只不过是在使用include的位置插入它们的内容。如果愿意,您可以自己编写所有这些内容。来自其他头文件的声明在该文件中不可见,除非您包含头文件或提供完全相同的声明副本
使用头文件是最简单的读取方法:在源文件中使用另一个程序的唯一合理方法。通过包含,您可以指示编译器读取文件内容,以便您可以轻松使用该文件中的任何内容。来自其他头文件的声明在该文件中将不可见,除非您包含头文件或提供完全相同的声明副本
使用头文件是最简单的读取方法:在源文件中使用另一个程序的唯一合理方法。通过包含,您可以指示编译器读取文件的内容,以便您可以轻松使用该文件中的任何内容。大型项目被编译为对象文件.o,然后链接到一个二进制文件中
这意味着在编译时,如果您访问位于另一个对象文件中的函数,编译器不知道这些函数,因此通过包含.h文件,您可以声明链接时可用的函数,因此,编译相信它们会在那里,而不会引起关于缺少函数的错误。大型项目被编译成对象文件.o,然后在一个二进制文件中链接在一起 这意味着,在编译时,如果您访问位于另一个对象文件中的函数,编译器将不知道这些函数,因此通过包含.h文件,您可以声明链接时可用的函数,因此编译器相信这些函数将在那里,而不会引发有关缺少函数的错误。Wikipedia: 头文件是一个允许程序员分离某些文件的文件 将程序源代码的元素转换为可重用文件。头文件 通常包含类、子例程、, 变量和其他标识符。希望声明 多个源文件中的标准化标识符可以放置这样的文件 单个头文件中的标识符,其他代码可以包括这些标识符 每当需要标题内容时。这是为了保持 标头中与实现分离的接口 维基百科: 头文件是一个允许程序员分离某些文件的文件 将程序源代码的元素转换为可重用文件。头文件 通常包含类、子例程、, 变量和其他标识符。希望声明 多个源文件中的标准化标识符可以放置这样的文件 单个头文件中的标识符,其他代码可以包括这些标识符 每当需要标题内容时。这是为了保持 标头中与实现分离的接口
计算机本身无法发现任何东西。这只是我们告诉它做什么[程序]。我们包含的文件也在做同样的事情,它给出了我们在程序中使用的命令的基本概念,以及如何使其工作。这些信息存在于包含的文件中 计算机本身无法发现任何东西。这只是我们告诉它做什么[程序]。我们包含的文件也在做同样的事情,它给出了我们在程序中使用的命令的基本概念,以及如何使其工作。这些信息存在于包含的文件中 它最初是交叉递归的编译问题:
void foo() {
//bar? what is this function???
bar();
}
void bar() {
//I know foo() because it appears before.
foo();
}
foo只能在之前定义了bar的情况下调用它。
只有在之前定义了foo时,bar才能调用foo
那么我们首先定义哪一个呢
为了解决这个问题,原型应运而生
然后将原型收集到a.h文件中
然后,它成为了一种良好的做法,因为它将接口与实现分离。它最初是交叉递归的编译问题:
void foo() {
//bar? what is this function???
bar();
}
void bar() {
//I know foo() because it appears before.
foo();
}
foo只能在之前定义了bar的情况下调用它。
只有在之前定义了foo时,bar才能调用foo
那么我们首先定义哪一个呢
为了解决这个问题,原型应运而生
然后将原型收集到a.h文件中
然后,它成为了一种良好的实践,因为它将接口与实现分离。它对于层次结构设计非常有用。你可以用你自己写c
当你需要相同的代码时,你需要复制或重写它。有了“头”,我们可以将系统的不同部分分别写入头中,然后我们可以测试或重用它。这对层次结构设计很有用。您可以编写没有标题的c,然后您会看到每个源文件都变得太大,无法理解或使用,当您需要相同的代码时,您需要复制或重写它。使用“标题”,我们可以将系统的不同部分分别写入标题,然后我们可以测试或重用它。好资源,希望OP也能学会使用它+1很好的资源,希望OP也能学会使用它+1抱歉,但头文件并非主要用于此目的。您可以直接包含另一个.c,只要您没有交叉递归的问题,它就可以工作。请检查我的答案以了解更多解释。但我承认,在大多数情况下,包括另一个。c是一个非常糟糕的做法。当然它会起作用。。。它还需要更多的编译时间,因为它将重新编译所有内容,而不仅仅是已更改的文件。抱歉,头文件并不是主要用于此目的。您可以直接包含另一个.c,只要您没有交叉递归的问题,它就可以工作。请检查我的答案以了解更多解释。但我承认,在大多数情况下,包括另一个。c是一个非常糟糕的做法。当然它会起作用。。。它还需要更多的编译时间,因为它将重新编译所有内容,而不仅仅是已更改的文件。如果使用交叉递归,它们实际上很有用。正如您的答案所述,您可以像在头文件中那样写出函数原型。除了理智之外,仍然没有实际需要使用它们。这是真的,我同意。如果使用交叉递归,它们实际上是有用的。好吧,正如你的回答所述,你可以像在头文件中那样写出函数原型。除了理智之外,仍然没有实际需要使用它们。这是真的,我同意。我只是使用这个网站,因为我想做一个与我的项目类似的网站。请不要投票否决我我喜欢层次结构。他们把我送进。。。休眠。我使用这个网站是因为我想创建一个与我的项目类似的网站。请不要投票否决我我喜欢层次结构。他们把我送进。。。冬眠,很好的例子!很好的例子!