C语言
rex_nie
这个作者很懒,什么都没留下…
展开
-
C 笔记
以下为 阅读 TI MSP430 CPU 相关的书籍做的记录。1. 位域在内存中的摆放顺序可通过编译器的选项来配置。默认情况下,编译器会从最低位开始放置位域成员。要从最高位开始摆放位域成员,可通过下列宏来实现:#program bitfields=reversedgcc 中对位域没有定义这个选项,只有以下的定义:-fsigned-bitfields-funsigned-bi原创 2013-08-30 21:36:38 · 532 阅读 · 0 评论 -
有用的C语言工具
用于检查源代码的工具 工具 工具简要说明 参考链接 indent linux下代码格式化工具 Linux 代码格式化工具 indent astyle 一个开源的代码格式化工具,可美化C,C++,C++/CLI,Objective‑C,C#,Java等各种语言,还可集成到IDE,强烈推荐 Astyle:代码格式化工具简明指南 Linux下C/C...原创 2018-05-20 01:35:27 · 1071 阅读 · 0 评论 -
理解C语言声明的优先级规则
C语言的声明有时会很长,让人感到恐惧。这里描述了一种方法,用通俗的语言把声明分解开来,分别解释各个组成部分。理解C语言声明的优先级规则的步骤声明从它的名字开始读起,然后按照优先级顺序依次读取。优先级从高到低依次是:声明中被括号括起来的那部分后缀操作符: 括号()表示这是一个函数, 方括号[]表示这是一个数组前缀操作符:星号*表示“指向…的指针”如果const和(或)...原创 2018-05-20 01:34:35 · 345 阅读 · 0 评论 -
C语言常被搞错的运算符优先级
C语言的运算符有优先级和结合性两个属性,而且相同的符号存在复用的情况,所以很容易造成错误。这里有个建议,多给表达式加上括号,可以提高代码的可读性和减少错误的发生。C语言运算符优先级存在的问题 优先级问题 表达式 人们可能误以为的结果 实际结果 .的优先级高于*->操作符用于消除...原创 2018-05-20 01:27:49 · 228 阅读 · 0 评论 -
C语言中容易混淆的const关键字
const关键字是ANSI标准新增加的关键字。const是个类型限定符,可以和任何类型说明符一起使用,以指定被声明对象的特殊属性。C语言的类型说明符包括: - void - char - short - int - long - float - double - signed - unsigned - 结构体说明符 - 联合体说明符 - 枚举说明符 - 类型定义名co...原创 2018-05-20 01:24:02 · 273 阅读 · 0 评论 -
对C语言中无符号类型的建议
算术类型转换首先给出一段C代码:int main(void){ if (-1 < (unsigned char)1) printf("true, ANSI C semantics\n"); else printf("false, K&R C semantics\n"); return 0;}这段程序分别在AN...原创 2018-05-20 01:22:38 · 338 阅读 · 0 评论 -
C语言版本迭代
和大多数编程语言一样,C语言版本迭代过程也经历了诞生,到被关注,被广泛使用,必须标准化,最后普及的过程。《C专家编程》一书有介绍C语言诞生及K&R C,ANSI C,ISO C等标准化的一些故事,有兴趣的可以去看看。作为程序员,我关心的是版本的标准迭代。1978年,C语言经典名著The C Programming Language出版了,该版本描述的C受到了广泛使用,被称为K&am...原创 2018-05-05 23:25:51 · 756 阅读 · 0 评论 -
ANSI C定义的一些关于可移植性的术语说明
ANSI C标准定义了一些术语,用于描述某种编译器的特点。对这些术语有一个比较好的了解,对于提供代码的可移植性和错误的排查都有帮助的。不可移植的代码(unportable code)由编译器定义的(implementation-defined): 由编译器设计者决定采取何种行动,也就是说在不同的编译器中所采取的行为可能并不相同,但是它们都是正确的。每个编译器的文档会给出具体的行为方式。...原创 2018-05-05 17:35:44 · 219 阅读 · 0 评论 -
FreeRTOS IPC总结
createreceive/takesend/give/releasequeue_lenxItemSizeuxMessageWaitingwhen initBASExQueueCreatexQueueCreateStaticxQueueReceivexQueueReceiveFromISRxQueueSen原创 2018-05-03 09:17:13 · 1038 阅读 · 0 评论 -
C语言常用宏的使用小结
1.防止一个头文件被重复包含#ifndef __HEAD_H_#define __HEAD_H_#include ......#endif2.得到指定地址上的一个字节或字#define MEM_BYTE(x) (*((char *)(x)))#define MEM_WORD(x) (*((short *)(x)))3. 得到一个field在结构体(struct)中的原创 2017-02-24 00:04:44 · 257 阅读 · 0 评论 -
linux下real user id,effective user id,saved-set-user-id总结
from: http://blog.csdn.net/jiqiren007/article/details/6142502 linux中每个进程有六个或者更多的ID与其关联: real user id一般是从passwd文件中获取的,一般是不会发生改变的,当然也可以改变。可以理解为启动该进程的用户,即哪个用户启动了该进程,那么该进程的real user转载 2014-03-02 22:34:45 · 2566 阅读 · 0 评论 -
C语言标准输入缓存区清理方法列表
1. scanf("%*[^\n]%*c");2. while((ch = getchar()) != '\n' && ch != EOF);3. setbuf(stdin, NULL);验证平台:CPU: AMD Athlon(tm) II X2 250 ProcessorOS: ubuntu 8.10compile: gcc 4.3.2关于scanf 的原创 2013-08-31 18:32:19 · 1110 阅读 · 0 评论 -
C中的总线错误和段错误
最近写了个基于linux的日志系统,中途遇到了两个错误: bus error(core dumped)和segmentation fault(core dumped)。 这两个错误非常的折磨人,错误信息对引起这两种错误的源代码错误并未作简单的解释,上面的信息并未提供如何从代码中寻找错误的线索。所以往往很难定位到具体出错在哪里。大多数的问题都出于这样一个事实:错误就是操作系统(OS)所检测到...原创 2018-05-20 01:36:08 · 1542 阅读 · 0 评论