2019-11-17 09:22
⁄ 工业·编程
⁄ 共 518字
在C/C++中,宏定义的有效范围被规定为当前文件内有效。
“当前文件内有效”分为两种情况,一种是定义在头文件中,另一种是定义在源文件中。
1)在头文件中的宏定义,随着头文件一同被包含到源文件中时,此时宏定义在该源文件中有效,当头文件中的宏定义随着该头文件一起被包含到另一个头文件中,而这另一个头文件又被另一个源文件包含,则该宏定义在最终被包含的源文件中...
c++阅读全文
2019-11-16 09:17
⁄ 工业·编程
⁄ 共 308字
#include <iostream>
using namespace std;
void t(void)
{
#define a 10
}
int main()
{
cout << a<<endl;
return 0;
}
如上代码编译,打印输出结果为10。由此可见#define的作用域是文件作用域,在定义之后的位置使用都有效。改变其作用域可在后面加#undef。如下
#include <iostream>
using namespace std;
void t(void)
{
#de...
c++阅读全文
2019-11-15 09:11
⁄ 工业·编程
⁄ 共 565字
C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用.使用过程中我们经常会听说 GUN C 、ANSI C、标准C这几个术语,在了解这几个术语对应的C标准之前,我们需要先了解三个组织,分别是自由软件基金会,美国国家标准学会以及国际标准化组织。下面对其三个组织进行简单说明:
自由软件基金会:是美国的一个民间非营利组织,致力于推进自由软件,其中linux与gnu就是由这...
c++阅读全文
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 =-...
c++, 演变阅读全文
2019-11-12 09:06
⁄ 工业·编程
⁄ 共 669字
我们在写c语言的时候,经常要使用一些库函数。
虽然我们自己也可以进行写函数,但是,使用已经存在的函数,可以降低我们的工作量和我们代码出现问题的概率。
一般情况下,我们都会使用库函数,但是对于一些初学者而言,库函数,到底需要哪些,我们在自己的函数中,需要添加哪些库函数。有的是不是不需的。
1:基本的库函数
stdio.h和stdlib.h还有string.h这三个库函数,基本上是所有的c语言程序中都有的库函数,这...
glibc阅读全文
2019-11-11 08:56
⁄ 工业·编程
⁄ 共 1990字
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再稍微细分一下的话,整...
glibc阅读全文
2019-11-10 08:49
⁄ 工业·编程
⁄ 共 1117字
Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义?
libc
1)libc概念
libc是Stantard C Library的简称,它是符合ANSI C标准的一个标准函数库。libc库提供C语言中所使用的宏,类型的定义,字符串操作符,数学计算函数以及输入输出函数等。正如ANSI C是C语言的标准一样,libc只是一个函数库标准,每个操作系统都会按照该标准对标准库进行具体实现。通常我们所说的libc是特指...
glibc阅读全文
2019-11-09 08:33
⁄ 工业·编程
⁄ 共 909字
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标准(带有一些小改动)被美国国家标...
c++, glibc阅读全文
2019-11-08 08:17
⁄ 工业·编程
⁄ 共 4775字
变长参数,指的是函数参数数量可变,或者说函数接受参数的数量可以不固定。实际上,我们最开始学C语言的时候,就用到了这样的函数:printf,它接受任意数量的参数,向终端格式化输出字符串。本文就来探究一下,变长参数函数的实现机制是怎样的,以及我们自己如何实现一个变长参数函数。在此之前,我们先来了解一下参数入栈顺序是怎样的。
函数参数入栈顺序
我们可能知道,参数入栈顺序是从右至左,是不是这样的呢?我们可以通过...
c++阅读全文