基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置. 与线程取消相关的pthread函数int pth ...
分类:
编程语言 时间:
2018-02-08 17:50:22
阅读次数:
168
2018.2.7 ================== 常变量 const const 数据类型 常变量名=初始值; 使用const关键字指定常变量; 定义时必须初始化; 不能再次被赋值; 用const定义与用define定义的区别: 区别1 define是宏定义,程序在预处理阶段将用define定 ...
分类:
其他好文 时间:
2018-02-08 00:34:07
阅读次数:
179
1 import UIKit 2 3 // 先写两个屏幕宽高的宏定义 4 let kScreenWidth = UIScreen.main.bounds.size.width 5 let kScreenHeight = UIScreen.main.bounds.size.height 6 7 cla... ...
分类:
编程语言 时间:
2018-02-07 22:52:11
阅读次数:
218
1.system("time\t"); system("date\t"); printf("%s,%d",__TIME__,__LINE__);...(FILE,TIME,DATE) 2.#define name stuff 如果定义的stuff非常的长,可以用反斜杠将他们分成几行。 3.在语句st ...
分类:
其他好文 时间:
2018-02-05 00:37:58
阅读次数:
141
一、断言:运行时与预处理时 断言(assertion)是一种编程常用的手段。想必大家都见过 assert 吧。今天我们就来了解一下它。 通常情况下,断言就是将一个返回值总是需要为真的判别式放在语句中,用于排除在设计的逻辑上不应该产生的情况。 比如一个函数总需要输入在一定的范围内的参数,那么程序员就额 ...
分类:
其他好文 时间:
2018-02-04 13:55:46
阅读次数:
283
作为第一篇,首先要说一下C++11与C99的兼容性。 C++11将 对以下这些C99特性的支持 都纳入新标准中: 1) C99中的预定义宏 2) __func__预定义标识符 3) _Pragma操作符 4) 不定参数宏定义以及__VA_ARGS__ 5) 宽窄字符串连接 这些特性并不像语法规则一样 ...
分类:
其他好文 时间:
2018-02-04 00:28:56
阅读次数:
552
nginx启动流程: 根据上面的手稿得知,nginx在循环中调用ngx_process_events_and_timers该函数来处理事件,在该函数中,最主要的一个操作是调用了ngx_process_events函数,该函数是一个宏定义,然后我再工程里面搜一下ngx_event_actions,结果 ...
分类:
其他好文 时间:
2018-01-30 20:00:51
阅读次数:
123
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。 1、宏定义中字符串化操作符#: #的功能是将其后面的宏参数进行字符串化操作,意思就是对它所应用的宏变量通过替换后在其左右各加上一个双引号。 例如: 上面代码中的反斜线\主要用来转译换行符, ...
分类:
其他好文 时间:
2018-01-30 00:27:30
阅读次数:
353
由于微软在VS2013中不建议再使用c的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误,在源文件中添加以下指令就可以避免这个错误提示:法一:#define _CRT_SECURE_NO_WARNINGS把这个宏定义一定要放到.c文件的第一行。法二:在 ...
2、 带参宏一般用法 比如#define MAX(a,b) ((a)>(b)?(a):(b))则遇到MAX(1+2,value)则会把它替换成: ((1+2)>(value)?(1+2):(value))注意事项和无参宏差不多。 但还是应注意 则,输入FUN(345)会被替换成什么? 其实,如果这么 ...
分类:
其他好文 时间:
2018-01-27 00:33:42
阅读次数:
93