什么是C语言语言?

时间:2016-08-14 12:36:50

标签: c include header-files

我需要知道C语言中“Header”的含义是什么?它是:

  • 代码中的某个区域,如HTML代码中的标题区域(标题>或声明区域?或定义区域?,或者种类)?
  • 或者它就像一个可以调用的函数(可以是:函数,子例程,范围或类型)。

4 个答案:

答案 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:)