现在位置: 首页 > 自动控制 > 文章
C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用.使用过程中我们经常会听说 GUN C 、ANSI C、标准C这几个术语,在了解这几个术语对应的C标准之前,我们需要先了解三个组织,分别是自由软件基金会,美国国家标准学会以及国际标准化组织。下面对其三个组织进行简单说明: 自由软件基金会:是美国的一个民间非营利组织,致力于推进自由软件,其中linux与gnu就是由这...
阅读全文
2019-11-14 11:19 工业·编程 ⁄ 共 5908字 暂无评论
  什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。   下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。   pool_init()函数预先创...
阅读全文
2019-11-13 09:07 工业·编程 ⁄ 共 1222字 暂无评论
1.K&R C 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型 长整数(long int)类型 无符号整数(unsigned int)类型 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =-...
阅读全文
2019-11-12 09:06 工业·编程 ⁄ 共 669字 暂无评论
我们在写c语言的时候,经常要使用一些库函数。 虽然我们自己也可以进行写函数,但是,使用已经存在的函数,可以降低我们的工作量和我们代码出现问题的概率。 一般情况下,我们都会使用库函数,但是对于一些初学者而言,库函数,到底需要哪些,我们在自己的函数中,需要添加哪些库函数。有的是不是不需的。 1:基本的库函数 stdio.h和stdlib.h还有string.h这三个库函数,基本上是所有的c语言程序中都有的库函数,这...
阅读全文
2019-11-11 08:56 工业·编程 ⁄ 共 1990字 暂无评论
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再稍微细分一下的话,整...
阅读全文
2019-11-10 08:49 工业·编程 ⁄ 共 1117字 暂无评论
   Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义? libc  1)libc概念 libc是Stantard C Library的简称,它是符合ANSI C标准的一个标准函数库。libc库提供C语言中所使用的宏,类型的定义,字符串操作符,数学计算函数以及输入输出函数等。正如ANSI C是C语言的标准一样,libc只是一个函数库标准,每个操作系统都会按照该标准对标准库进行具体实现。通常我们所说的libc是特指...
阅读全文
1.C语言的标准发展历史 C语言的标准经历过C89、C90、C99以及C11几个版本的发展 (1)C89 1983年,美国国家标准协会ANSI组成了一个委员会,X3J11,为了创立C的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSIX3.159-1989 "Programming Language C"正式生效。这个版本的语言经常被称作"ANSIC",或有时称为"C89"。 (2)C90 在1990年,ANSI C标准(带有一些小改动)被美国国家标...
阅读全文
2019-11-08 08:17 工业·编程 ⁄ 共 4775字 暂无评论
变长参数,指的是函数参数数量可变,或者说函数接受参数的数量可以不固定。实际上,我们最开始学C语言的时候,就用到了这样的函数:printf,它接受任意数量的参数,向终端格式化输出字符串。本文就来探究一下,变长参数函数的实现机制是怎样的,以及我们自己如何实现一个变长参数函数。在此之前,我们先来了解一下参数入栈顺序是怎样的。 函数参数入栈顺序 我们可能知道,参数入栈顺序是从右至左,是不是这样的呢?我们可以通过...
阅读全文
2019-11-07 08:05 工业·编程 ⁄ 共 673字 暂无评论
glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,如uclibc(https://www.uclibc.org/)、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。 任何类似Unix的操作系统都需要一个C库:定义“系统调用”的库和其他基本工具,...
阅读全文
2019-11-06 21:12 工业·编程 ⁄ 共 738字 暂无评论
  The __KERNEL__ macro is defined because there is programs (like libraries) than include kernel code and there is many things that you don't want them to include. So most modules will want the__KERNEL__ macro to be enabled. When you compile your kernel, __KERNEL__ is defined on the command line. User-space programs need access to the kernel headers, but some of the info in kernel headers ...
阅读全文