摘要:可以用typedef指定新的类型名来代替已有的类型名。 1.简单地用一个新的类型名代替原有的类型名; typedef int Integer; typedef float Real; 2.命名一个简单的类型名代替复杂的类型表示方法; 2.1 命名一个新的类型名代替结构体类型 typedef stru
阅读全文
摘要:如果一个变量只有几种可能的值,则可以定义为枚举(enumeration)类型,所谓枚举就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。 声明枚举类型用enum开头,例如, enum Weekday {sun, mon, tue, wed, fri, sat}; 然后用此类型来定义变
阅读全文
摘要://定义 typedef union { uint32_t val; struct { uint32_t pa0_fsel :3; uint32_t pa1_fsel :3; uint32_t :2; } BITS; } PA_FSEL0; typedef union { uint32_t val;
阅读全文
摘要:有时候想用同一段内存单元存放不同类型的变量,例如,一个短整型,一个字符型和一个实型变量放在同一个地址开始的内存单元中。以上三个变量在内存中占的字节数不同,但都是从同一个地址开始存放。也就是使用覆盖技术,后一个数据覆盖前面的数据。使几个不同的变量共享同一段内存的结构,称为共用体类型。 union 共用
阅读全文
摘要:可以利用强制类型转换运算符将一个表达式转换成所需类型: (double)a; //将a转换成double类型 (int)(x+y); //将x+y的值转换成int型 (float)(5%3);//将5%3的值转换成float类型 其一般形式为 (类型名)(表达式) 注意:表达式应该用括号括起来。如果
阅读全文
摘要:结构体指针的用法 所谓的结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存在在一个指针变量中,那个这个指针变量就指向该结构体变量。 1.1 指向结构体变量的指针 指向结构体对象的指针变量既可指向结构体变量,也可指向结构体数组中的元素
阅读全文
摘要:C语言允许用户自己建立由不同数据类型组成的组合型的数据结构,称为结构体。 声明一个结构体类型: struct Student {int num; char name[20]; char sex; }; 成员也可以属于另外一个结构体类型。 struct Date { int month; int da
阅读全文
摘要:1. 背景 在嵌入式领域,我们往往有的时候需要根据一个标记 flag或者变量(全局的)来进行不同策略的程序执行。 在非编译器优化的形式下debug模式下,不会出任何问题。 但是我们对外发布的时候,往往都是 release版本,也就是进行了编译器优化,这个时候程序可能就会不同。 2. 编译器优化 c语
阅读全文
摘要:volatile用于声明变量时的使用的限定符。它告诉编译器该变量值可能随时发生变化,且这种变化并不是代码引起的。给编译器这个暗示是很重要的。 volatile的声明: 1.声明一个变量为volatile,可以在数据类型之前或之后加上关键字volatile。下面的语句,把变量abc声明一个volati
阅读全文
摘要:c中支持变参宏和__VA_ARGS__ 本人之前写过一篇关于c语言中宏用法的文章,需要的可以查看此篇文章>https://www.cnblogs.com/fulai-hou/articles/15520121.html>,这一篇主要讲gcc中专门支持的关于宏的参数的语法。 使用保留名__VA_ARG
阅读全文
摘要:1.用作符号常量/明示常量时 #define预处理指令和其他预处理指令一样,以#号作为一行的开始。指令可以出现在源文件的任何地方,其定义从出现的地方到该文件的末尾有效。 预处理器指令从#开始,到后面的第一个换行符为止。宏的名字中不允许有空格,而且必须遵循c变量的命名规则:只能使用字母/数字/下划线,
阅读全文