目录

一、#include<>与””的区别

二、举例

三、附: 初学者常用标准库头文件简介

1.stdio.h

2.stdlib.h

3.math.h

4.stdbool.h

5.string.h


一、#include<>与””的区别

C语言包含头文件有两种写法#include <stdio.h>和#include "stdio"(#include后面可以不空格),两种写法的区别如下:

  1. #include <头文件>  : 编译器会从系统配置的库环境中去寻找头文件,不会搜索当前文件夹。通常用于引用标准库头文件。
  2. #include "头文件"  : 编译器会从当前文件夹中寻找头文件,如果找不到则到系统默认库环境中去寻找一般用于引用用户自己定义使用的头文件。

二、举例

1.我们新建一个项目xx,只包含main.cpp一个文件

 

 可以看到,无论是#include"stdio.h"还是#include<stdio.h>程序都能正常运行

解析:1)使用#include<stdio.h>添加头文件时,编译器到标准库头文件中查找,发现stdio.h头文件,将其复制到当前行;2)而使用#includestdio.h添加头文件时,编译器先到当前项目所在的文件夹中查找stdio.h头文件,发现没有这个头文件,于是编译器到系统默认库环境中去寻找,发现stdio.h头文件,将其复制到当前行。这里展开的stdio.h头文件和#include<stdio.h>展开的头文件是同一个。

2.在xx项目中添加一个头文件stdio.h,并使用#include”stdio.h”

 

 

编译器报错,原因是printf未声明。

解析:使用#includestdio.h添加头文件时,编译器先到当前项目所在的文件夹中查找stdio.h头文件,发现用户自定义的stdio.h头文件,于是编译器将其复制到当前行。这里展开的头文件是用户自定义的头文件,用户自定义的stdio.h头文件没声明printf函数,所以当然会报错。

3.再往stdio.h文件里添加#include<stdio.h>

 

 

程序就能正常运行了。


三、附: 初学者常用标准库头文件简介

1.stdio.h

定义了输入输出操作,包括标准格式化输入输出(scanf、printf),文件格式化输入输出(fscanf、fprintf),字符字符串输入输出(getchar、getsput、char、puts...)等等。

一般情况下,C程序都会包含输入输出操作,因此这是最常用的头文件。此外涉及文件的操作也常常需要包含stdio.h头文件。

2.stdlib.h

定义了几个通用功能,包括动态内存管理(malloc、free等),随机数生成(rand、srand),与环境的通信,整数算术,搜索,排序和转换。

涉及链表的操作,需要该头文件。

3.math.h

定义了三角函数、反三角函数、指数函数、对数函数、开平方sqrt()、开立方cbrt()、取绝对值fabs()等常见数学运算函数。

//注意:fabs参数为double类型,而abs参数为int类型。fabs是求实数的绝对值,abs是求整数的绝对值

4.stdbool.h

定义了bool类型。

在C99标准之前,C语言没有bool类型。C99标准中新增的头文件stdbool.h中引入了bool类型,与C++中的bool兼容。

此外C99新增的关键字_Bool可以表示布尔类型。

5.string.h

定义了操纵字符串和数组的函数。包括下列几个函数:

char * strcpy ( char *destin, char *source);//复制字符串

char * strncpy ( char *dest, char *src, size_t n);//将字符串src中最多n个字符复制到字符数组dest中

 char * strcat ( char *destin, char *source);//连接字符串

int strcmp ( char *str1, char *str2);//看ASCII码,str1>str2,返回值 > 0;两串相等,返回0

size_t strlen ( const char *s);//求字符串的长度,从字符串的首地址开始到遇到第一个'\0'停止计数

void swab ( char *from, char *to, int nbytes);//交换字节

         以上只是对部分C标准库头文件的简单描述,由于篇幅限制,很多函数声明、变量声明、宏定义未能展开来讲。此外除了上述5个头文件,C语言标准库头文件还有很多,这里仅指出了初学者经常用到的几个头文件。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐