我需要知道C语言中“Header”的含义是什么?它是:
答案 0 :(得分:2)
标头是C程序员通常接受的约定。
它通常是一个.h文件,它包含在C源文件中,可以提供多种好处。
1.-提供数据类型,全局变量,常量和函数的声明。
所以你不必一次又一次地重写它们。如果他们需要更改,您只需要在一个文件中进行更改。
例如,这个由两个补偿单元(两个.c文件)组成的程序编译并运行得很好。
// File funcs.c
#include <stdio.h>
struct Position {
int x;
int y;
};
void print( struct Position p ) {
printf("%d,%d\n", p.x, p.y );
}
// File main.c
struct Position {
int x;
int y;
};
int main(void) {
struct Position p;
p.x = 1; p.y = 2;
print(p);
}
但是在头文件中声明struct Position
并在需要的任何地方只需要#include
就更具有可持续性,例如:
// File funcs.h
#ifndef FUNCS_H
#define FUNCS_H
struct Position {
int x;
int y;
};
#endif // FUNCS_H
//File funcs.c
#include <stdio.h>
#include "funcs.h"
void print( struct Position p ) {
printf("%d,%d\n", p.x, p.y );
}
//File main.c
#include "funcs.h"
int main(void) {
struct Position p;
p.x = 1; p.y = 2;
print(p);
2.-提供某种类型的安全性。
C功能implicit declaration of functions。 A&#34;功能&#34; (或者更确切地说是一种可论证的语言设计错误),这是在C99中修复的。
考虑这个由两个.c文件组成的程序:
//File funcs.c
#include<stdio.h>
int f(long n)
{
n = n+1;
printf("%ld\n", n );
}
// File main.c
int main(void)
{
f("a");
return 0;
}
使用gcc,该程序可以在没有警告或错误的情况下编译。但是,我们没有合理的期望和愿望:
jose@cpu ~/t/tt $ gcc -o test *.c
jose@cpu ~/t/tt $ ./test
4195930
使用这样的头文件:
//File funcs.h
#ifndef FUNCS_H
#define FUNCS_H
int f(long n);
#endif // FUNCS_H
//File funcs.c
#include<stdio.h>
int f(long n) {
n = n+1;
printf("%ld\n", n );
}
// File main.c
#include"funcs.h"
int main(void) {
f("a");
return 0;
}
该程序仍然编译并且工作错误但至少我们收到警告:
jose@cpu ~/t $ gcc -o test *.c
main.c: In function 'main':
main.c:5:5: warning: passing argument 1 of 'f' makes integer from pointer without a cast
f("a");
^
In file included from main.c:2:0:
funcs.h:3:5: note: expected 'long int' but argument is of type 'char *'
int f(long n);
^
jose@cpu ~/t $ ./test
4195930
3.-提供公共界面,同时让实施细节保持隐藏。
设计程序时,最好将其模块化。这是为了确保它的不同部分(模块)尽可能独立。因此,当您需要对一个模块进行更改时,您不必担心影响其他模块的此类更改
Headers帮助完成这项工作,因为您在模块的标头中添加了此类模块的用户所需的数据结构,函数原型和常量。
实施细节进入.c文件。
这就是图书馆的运作方式。 API接口在头文件中指定和分发。但API代码是在.c文件中,不需要分发。作为库的用户,您只需要标题和已编译的库,而不是源代码。
答案 1 :(得分:1)
C语言是什么?
参考语言我说C头文件描述了由翻译单元提供的接口,即随附的C文件。
&#34; 接口&#34;通过
并非所有上述内容都需要成为C标头的一部分。
从C语言的角度来看,C标题是可选的,但按照惯例,它们应该存在。
答案 2 :(得分:0)
通常在C中讨论“标题”时,您使用the #include
preprocessor directive包含的文件是什么意思。这些被称为标题文件。
它也可能是其他内容,例如源(或标题文件)顶部的注释可能是标题。函数前的注释可以是函数头。
或者,当通过互联网读取数据文件或数据时,许多协议将数据拆分为标题和实际数据(请参阅例如HTTP)。
答案 3 :(得分:0)
标题是扩展名为.h的文件。 它旨在帮助编译器理解代码中使用的符号(方法,函数,结构,变量......)。在书的最后看到它就像一个词汇表。 它仅用于开发目的。 它有助于develloper知道哪些功能可用而无需查看所有实现文件。就像一个手册页。
在谷歌搜索? http://www.tutorialspoint.com/cprogramming/c_header_files.htm:)