linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!

一:前言

进行linux下C/C++服务端后台开发的都知道,需要跟各种头文件打交道。

比如使用printf函数则需要引用#include <stdio.h>,使用STL的map容器则要#include <map>,使用socket网络编程则要#include <sys/socket.h>,

那么我考考你uint32_t是在哪个头文件定义的呢?sleep函数又是在哪个头文件?open和close是在同一个头文件里吗?

是不是有点一时半会答不上来,有没有好的方法能梳理头文件呢,把头文件进行分门别类呢?

答案是可以的。

我把头文件分为以下三类:

  • C标准头文件:一共29个头文件。 http://en.cppreference.com/w/c/header点击打开链接
  • C++标准头文件:除C标准库外,还包括STL标准库等10+个头文件 http://www.cplusplus.com/reference/stl/ 。把C标准头文件放到std的命名空间里,文件名统一加上c前缀,如#include <string.h> 改成#include <cstring>外,
  • linux系统头文件:操作系统相关,如socket网络、共享内存、信号量等,常用的就10+左右。http://pubs.opengroup.org/onlinepubs/7908799/headix.html

二:C标准库

  • #include <string.h> 字符串操作相关

memcpy /strcpy 区别?

memset

strncpy

  • #include <stdio.h> 标准输入输出

fopen/fwrite

printf/scanf

  • #include <stdio.h> 标准输入输出

fopen/fwrite

printf/scanf

  • #include <stdlib.h> 常用的一些函数库

strtol/atoi

malloc/free

rand

qsort

abs/div

size_t

  • #include <math.h> 函数库

sin/cos

pow/sqrt

ceil/floor

  • #include <stdint.h>

uint32_t

SIZE_MAX

  • #include <ctype.h>

islower

toupper

  • #include <time.h>

time

mktime

  • #include <setjmp.h>...

三、C++标准库

  • #include <unistd.h>
    chown()
    close()/write()/read()
    fsync()
    sleep()/usleep()
    getpid()
  • #include <fcntl.h>
    open()
    create()
    fcntl()
  • #include <pthread.h>
  • #include <fcntl.h>
    open()
    create()
    fcntl()
  • #include <pthread.h>
  • sys目录下

<sys/shm.h>

<sys/msg.h>

<sys/socket.h>

<sys/sem.h>

<sys/stat.h>

<sys/time.h>

<sys/select.h>

<sys/epoll.h>

<sys/types.h>

五、结语

这样是不是一目了然,清晰很多。

时间: 2024-10-04 03:20:56

linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!的相关文章

Linux下Gvim 的基本操作-适合新手看

Linux下Gvim 的基本操作 vi 有三种方式 编辑方式 插入方式 命令方式在命令方式下,所有命令以“:”开始,所键入的字符系统均作为命令处理在命令方式下,按下i就会进入插入模式,用户输入的可视字符都添加到文件中,按下Esc键,就回到命令状态 基本命令光标命令:k,j,h,l-----上下左右移动光标nG-------跳转命令.n为行数,该命令立即跳转到指定的行Ctrl+G -----报告光标所在位置的行数和列数w,b----- 使光标向前或者向后跳过一个单词 编辑命令:i,a,r----在

wwwlyjustcom看完这篇,你就会Linux基本操作了,请耐看完199O8836661

只有光头才能变强这个学期开了Linux的课程了,授课的老师也是比较负责任的一位.总的来说也算是比较系统地学习了一下Linux了~本文章主要是总结Linux的基础操作以及一些简单的概念,对于开发者来说,能使用Linux做一些基本的操作是必要的!那么接下来就开始吧,当然了我的Linux仅仅是入门水平,如果有错的地方还需请大家多多包涵,并不吝在评论区指出错误~一.为什么我们要学习Linux相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形

关于 Docker 镜像的操作,看完这篇就够啦 !(下)

原文:关于 Docker 镜像的操作,看完这篇就够啦 !(下) 紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录: 一.Docker 删除镜像 1.1 通过标签删除镜像 1.2 通过 ID 删除镜像 1.3 删除镜像的限制 1.4 清理镜像 二.Docker 创建镜像 2.1 基于已有的镜像创建

PDF怎么拆分成多个PDF,看完这篇文章你就明白了

PDF文件对于每一个经常在职场上工作的人来说,是特别常见的一个文档格式,PDF格式深受人们的喜爱,因为是特别好用的,但同时也是比较难进行编辑和修改的,特别是遇到PDF文档过长,为了方便浏览和及时查找对我们有用的内容,这就需要将PDF文档拆分成多个PDF,那么PDF怎么拆分成多个PDF?通过今天的文章就来告诉大家PDF文档拆分的方法,看完这篇文章你就明白了,那么我们就一起来看看吧.?方法一:软件拆分法借助软件:如果想要将PDF文档拆分成多个PDF,那就需要借助迅捷PDF转换器来实现,这个软件有着丰

如何更准确过滤信息?看完本篇你就知道

无论是使用Excel办公,还是浏览器搜寻关键字,都是需要通过条件过滤来实现.今天,手把手教你实现Java web项目--实现多条件过滤功能. 分页查询需求分析:在列表页面中,显示指定条数的数据,通过翻页按钮完成首页/上一页/下一页/尾页的查询数据分析:通过观察,页面上需要显示下面的几个数据:当前页:currentPage页面大小:pageSize总页数:totalPage首页:1上一页:prevPage下一页:nextPage尾页:endPage总条数:totalCount结果集:result

ae模板怎么套用?看完这篇ae模板套用教程你就懂了

首先我们要知道,模板,是什么?模板就是别人做好了的工程文件,所以东西都已经完成,不需要任何效果方面的修改了.那么ae模板怎么套用?就是你用的时候,替换.修改或者删去某些东西,变成自己的视频.比如片头LOGO模板,你肯定得要有自己的LOGO,去替换模板里的LOGO,然后渲染成片,才会成你的片头:看完这篇ae模板套用教程你就懂了. https://www.macdown.com 本站提供了海量AE模板,我们选择片头LOGO模板,做你自己的片头. 首先下载完后,打开这个模板. 然后看一眼项目栏 我用的

看完这篇你还敢说,不懂Spring中的IoC容器?

一. 什么是IoC 什么是耦合和内聚 耦合指的就是模块之间的依赖关系.模块间的依赖越多,则表示耦合度越高,相应的维护成本就越高.内聚指的是模块内功能之间的联系.模块内功能的联系越紧密,则表示内聚度越高,模块的职责也就越单一.所以在程序开发中应该尽量的降低耦合,提高内聚.也就是设计原则中的开闭原则和单一职责原则. 工厂模式 工厂模式就是用来解决程序间耦合的一种设计模式.可以把所有要创建的对象放在工厂的一个集合里,当需要使用这个对象的时候,直接从工厂里面取出来用就行. 工厂模式的优点: 一个调用者想

零基础如何开始学习 Python?看完这篇从小白变大牛!

1.选择Python版本 对于Python工程师来说,Python的版本则是你们的工作环境.所以在学习之前一定要考虑选择一个合适自己的版本,Python3对零基础的小白很友好,易上手.选好版本后就可以开始学习了.创一个小群,供大家学习交流聊天如果有对学python方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学python能够持之以恒python爱好群,如果你想要学好python最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你

用markdown写博客,看这一篇就够了,附markdown文件分享

0. 前言 为什么用markdown写博客? 在写博客的过程中,最大的"痛点"在于写作中总是被"格式"之类的困扰,无法专注于内容写作: 在线写博客,会被网络或者编辑器本身所拖累: 本文介绍的markdown写作,可以使你专注于博客内容本身,写好即成稿: 更重要的是,博客内容及相关素材保存在本地,可以几乎不用修改就可以发布在不同的平台,类似java程序的"一次编写,到处运行". 记得上次用markdown写博客,尽管我有markdown使用经验,但