预处理与结构体简述

来源:互联网 发布:dns 多域名 同一ip 编辑:程序博客网 时间:2024/05/22 03:00

1. 宏定义:(宏定义时必须小心,保证宏代换之后不会有错,因为预处理程序对宏不做检查。

宏定义在函数外,其作用域从宏定义开始到源程序结束,如果要终止其作用域, #undef命令即可)

无参宏定义:#define

#’代表这是条预处理命令,define为宏定义命令

格式:#define 标识符 字符串(数值)

 

带参宏定义;相当于一个自定义函数

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

带参宏定义中,形式参数不分配内存单元,而宏调用时,实参有具体的值,实参需要作类型说明。

带参宏仅仅做符号代换,不存在值传递问题。

2. 文件包含:(将指定的文件插入该处命令行处代替该命令行,从而把指定的文件和当前源文件连成一个源文件)

例如:#include<stdio.h>

      #includemath.h

区别在于:“”在当前文件目录下找文件

<>在系统指定文件目录下找文件

3. 条件编译:(按照不同的条件去编译不同的程序部分)

格式1#ifdef标识符

程序段1

#else

程序段2

#endfif

如果标识符被定义了就执行程序段1,否则执行程序段2

格式2#ifndef标识符

程序段1

#else

程序段2

#endfif

如果标识符未被定义了就执行程序段1,否则执行程序段2

格式3#if常量表达式

程序段1

#else

程序段2

#endfif

如果常量表达式的值非0,则执行程序段1,否则执行程序段2

 

4. 结构体:(将相关联的数据打包成一个整体,传输时传输整个整体)

一般格式1struct结构体名

{

类型名1 成员名1

类型名2 成员名2

类型名3 成员名3

。。。。。。

};

格式2struct结构体名

{

类型名1 成员名1

类型名2 成员名2

类型名3 成员名3

。。。。。。

};

Struct 结构体名   /   *结构体名简写;

5. #define typedef

宏定义只是简单的字符替换,而typedef可以让新命名的标识符能更改定义的变量。