7

来源:互联网 发布:淘宝双十一超级红包 编辑:程序博客网 时间:2024/05/29 03:27


       第七章

1.无参宏定义

形式:define  标识符   字符串

“#”表示这是一条预处理命令;define为宏定义命令;

标识符为所定义的宏名;字符串可以是常数、表达式、格式串等

注意:宏定义只是简单代换(实事求是)

宏定义不是说明或语句,在行末不必加分号。

2.带参宏定义

  形式:define  宏名(形参表)  字符串

3.条件编译

ifdef  标识符

     程序段1

else

    程序段2

endif

如果标识符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的else可以没有。

将#ifdef改为#ifndef:如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。

if  常量表达式

     程序段1

#else

     程序段2

#endif

如果常量表达式的值为真(0),则对程序段1进行编译,否则对程序段2进行编译

4.##”被称为连接符,用来将两个Token连接为一个Token。注意这里连接的对象是Taken就行,而不一定是宏的变量。

5.结构体一般形式

struct结构体名

{

  类型名1   成员名1

  类型名2   成员名2

  类型名n  成员名n

  

}

6.结构体与数组比较:

     都由多个元素组成;

     各个元素在内存中的存储空间是连续的。

     数组中各个元素的数据类型相同,而结构体中的各个元素的数据类型可以不相同。

7.结构体上开始偏满足什么条件才可以使其成员全部对齐

     保证结构体长度是原始成员最长分配的整数倍即可。

8.结构体(struct)和联合体(union)的区别:

   在同一时刻,后者中存放的一个被选中的成员,而前者的所有成员都存在。

union变量的长度等于最长的成员的长度。

9.位段的定义格式为:

    type   [var]: digits

10.位段的使用注意点:

     位段的类型只能是:int,unsigned int,signed int三种类型

     无名位段不能被访问,但会占据空间

     不能对位段进行取地址操作

     位段不能出现数组的形式

 

       

 

     

0 0
原创粉丝点击