C语言常见问题(一)——头文件<>与””的区别
目录一、#include<>与””的区别二、举例三、初学者常用的标准库头文件一、#include<>与””的区别C语言包含头文件有两种写法#include<stdio.h>和#include"stdio"(#include后面可以不空格),两种写法的区别如下:#include <头文件>: 编译器只会从系统配置的库环境中去寻找头文件,不会搜索当前文件
目录
一、#include<>与””的区别
C语言包含头文件有两种写法#include <stdio.h>和#include "stdio"(#include后面可以不空格),两种写法的区别如下:
- #include <头文件> : 编译器只会从系统配置的库环境中去寻找头文件,不会搜索当前文件夹。通常用于引用标准库头文件。
- #include "头文件" : 编译器会先从当前文件夹中寻找头文件,如果找不到则到系统默认库环境中去寻找。一般用于引用用户自己定义使用的头文件。
二、举例
1.我们新建一个项目xx,只包含main.cpp一个文件
可以看到,无论是#include"stdio.h"还是#include<stdio.h>程序都能正常运行
解析:1)使用#include<stdio.h>添加头文件时,编译器到标准库头文件中查找,发现stdio.h头文件,将其复制到当前行;2)而使用#include”stdio.h”添加头文件时,编译器先到当前项目所在的文件夹中查找stdio.h头文件,发现没有这个头文件,于是编译器到系统默认库环境中去寻找,发现stdio.h头文件,将其复制到当前行。这里展开的stdio.h头文件和#include<stdio.h>展开的头文件是同一个。
2.在xx项目中添加一个头文件stdio.h,并使用#include”stdio.h”
编译器报错,原因是printf未声明。
解析:使用#include”stdio.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语言标准库头文件还有很多,这里仅指出了初学者经常用到的几个头文件。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)