12-2-14关于ANSIC标准的预定义宏
2012-02-14 13:27
225 查看
1 __LINE__ 在源代码中插入当前源代码行号
__FILE__ 在源代码中插入当前源代码文件名
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
__STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。
__cplusplus
标识符__LINE__和__FILE__通常用来调试程序;
标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;
这里一定要注意 前后均是两个_,别被假象迷惑了。否则引入了stdio.h,编译器也是不认识他们的。
2关于volatile.
在c中,变量用volatile进行定义,表示告诉编译器,你不 要自作聪明,进行编译优化,(编译器从该变量获取相应的值后,会自作聪明的进行优化,不在访问该变量所在的
内存地址,进行读取变量的数值,而是直接凭借上次的数值再次读取。)
因此有了volatile,编译器会乖乖的都从该变量存储的地址读取该变量值,保证了变量值的实时。
因此在并行设备的寄存器,中断程序会访问的全局变量,多线程中被共享的变量。
上述的三个场景都是需要我们特别小心的。尽量使用关键字volatile进行修饰。
3关于linux中的数据重定向
1> 以覆盖的方式将正确的数据输出到指定的文件或者设备上
1>>以累加的方式将正确的数据输出到指定的文件或者设备上
2>以覆盖的方式将错误的信息输出到指定的文件或者设备上
2>>以累加的方式将错误的信息输出到指定的文件或者设备上
其中>也为标准输出,默认为1
<为标准输入,默认为0,但是我们可以进行流的重定向。
4关于linux中清空某文本的整个字符
一般我们使用vim编辑器,在一般模式下输入gg,这样会跳到文本的第一行
然后输入dG 就回请空所有字符了。
借鉴另外一位大神的方法,echo > file
4关于线程退出
一般在linux中,涉及多线程的编码问题的时候。
一般主线程会陆续生成子线程来处理相应的内容,默认的线程状态为joinable,如果我们主线程调用pthread_join(pthread_id)来等待这些子线程运行结束,并得到他们的退出吗,进行相应资源的回收。这种思想是完全正确的,但是他是一种阻塞式的等待,如果我们的主线程一直等不到 你执行完成,就一直阻塞在那里。
如果新来一个客户端,需要我们为其创建线程,是完全无法执行下去的。
因此我们采用pthread_detach()
可以在主线程中调用pthread_detach(pthread_id);
或者在子线程中自身调用pthread_detacch(pthread_self());
这个函数的目的是设置了该子线程状态为detached,含义:该子线程运行结束后,会自动释放所有资源
__FILE__ 在源代码中插入当前源代码文件名
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
__STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。
__cplusplus
标识符__LINE__和__FILE__通常用来调试程序;
标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;
这里一定要注意 前后均是两个_,别被假象迷惑了。否则引入了stdio.h,编译器也是不认识他们的。
2关于volatile.
在c中,变量用volatile进行定义,表示告诉编译器,你不 要自作聪明,进行编译优化,(编译器从该变量获取相应的值后,会自作聪明的进行优化,不在访问该变量所在的
内存地址,进行读取变量的数值,而是直接凭借上次的数值再次读取。)
因此有了volatile,编译器会乖乖的都从该变量存储的地址读取该变量值,保证了变量值的实时。
因此在并行设备的寄存器,中断程序会访问的全局变量,多线程中被共享的变量。
上述的三个场景都是需要我们特别小心的。尽量使用关键字volatile进行修饰。
3关于linux中的数据重定向
1> 以覆盖的方式将正确的数据输出到指定的文件或者设备上
1>>以累加的方式将正确的数据输出到指定的文件或者设备上
2>以覆盖的方式将错误的信息输出到指定的文件或者设备上
2>>以累加的方式将错误的信息输出到指定的文件或者设备上
其中>也为标准输出,默认为1
<为标准输入,默认为0,但是我们可以进行流的重定向。
4关于linux中清空某文本的整个字符
一般我们使用vim编辑器,在一般模式下输入gg,这样会跳到文本的第一行
然后输入dG 就回请空所有字符了。
借鉴另外一位大神的方法,echo > file
4关于线程退出
一般在linux中,涉及多线程的编码问题的时候。
一般主线程会陆续生成子线程来处理相应的内容,默认的线程状态为joinable,如果我们主线程调用pthread_join(pthread_id)来等待这些子线程运行结束,并得到他们的退出吗,进行相应资源的回收。这种思想是完全正确的,但是他是一种阻塞式的等待,如果我们的主线程一直等不到 你执行完成,就一直阻塞在那里。
如果新来一个客户端,需要我们为其创建线程,是完全无法执行下去的。
因此我们采用pthread_detach()
可以在主线程中调用pthread_detach(pthread_id);
或者在子线程中自身调用pthread_detacch(pthread_self());
这个函数的目的是设置了该子线程状态为detached,含义:该子线程运行结束后,会自动释放所有资源
相关文章推荐
- 关于tcpl习题4-14定义宏swap(t,x,y)
- 12-7-14关于shell脚本的一个语法
- 关于绝对路径和相对路径(啥啥未定义或者找不到神码目录)
- 关于开放源代码的定义
- 关于C语言中定义结构体问题
- 小知识~关于声明和定义的一点整理
- Ajax Tookit TabContainer Styles (关于Ajax TabContainer 样式定义)
- 关于QT中enter的定义
- 12.关于UIWindow的总结
- 关于loose.dtd和xhtml1-transitional.dtd等文档类型定义模型中CSS失效的解决办法。
- 关于几个标签的定义
- 关于回调函数的定义
- c++中switch case 中关于变量定义问题
- C 关于变量a的那些乱七八糟的定义
- Lost - Season 03 Episode 12 - Par Avion - March, 14
- 关于欧氏空间的专题讨论(欧氏空间的定义,标准正交基,正交变换,对称变换)
- Windows定义的关于字符串的几种类型
- 关于javascript中函数的定义
- The NOTE of learning ASP.NET [12] 关于.NET的比较运算符
- 关于网络流的一些基本名词及其定义。