黑马程序员---C语言预处理

来源:互联网 发布:彩票平台源码 编辑:程序博客网 时间:2024/04/26 20:14

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———

预处理指令:

1.所有的预处理指令都是以#开头
 2.预处理指令分3
 1> 宏定义
 2> 条件编译
 3> 文件包含
 3.预处理指令在代码翻译成01之前执行
 4.预处理的位置是随便写的
 5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,
宏定义

#define 宏名值  宏名一般用大写或者以k开头,变量名一般用小写,可以用#undef取消宏定义的作用
#undef COUNT // 从这行开始,COUNT这个宏就失效
带参数的宏效率比较高(替换代码,注意每个参数都要加括号)
#define sum(v1, v2) ((v1)+(v2))
#define pingfang(a) ((a)*(a))

条件编译
    #if()
        语句1
    #elif()
        语句2
    #else()
        语句3
    #endif  
程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行)
只要写了#if,在最后面必须加上#endif
条件编译只编译宏中定义的语句,不参与编译的不会保存在内存中
文件包含

1.<>表示系统自带的文件,""表示自定义的文件
 2.不允许循环包含,比如a.h包含b.hb.h又包含a.h

#ifndef  _ONE_H_
#define _ONE_H_ 
#endif 如果没有定义_ONE_H_这个宏,那么就定义,如果定义了,那么结束条件编译,防止了one.h的内容被重复包含。
类型定义 typedef 
我们可以用typedef为各种数据类型起一个新的名字,有时由于某种类型繁琐,在多次定义这种类型的变量时特别麻烦,所以用typedef起一个别名,使之变得简单,也可以在别名的基础上再起别名。
 typedef可以用在很多场合,基本数据类型,指针,结构体,枚举
注意宏定义和typedef的区别,宏定义是纯粹的字符串替换,typedef是给类型起了个别名,和类型本身作用是相同的。

static和extern
外部函数:定义的函数能被本文件和其他文件访问
 1> 默认情况下所有函数都是外部函数
 2> 不允许有同名的外部函数
 内部函数:定义的函数只能被本文件访问,其他文件不能访问
 1> 允许不同文件中有同名的内部函数

static和extern对函数的作用: static对函数的作用 1> 定义一个内部函数 2> 声明一个内部函数 extern对函数的作用: 1> 完整地定义一个外部函数 2> 完整地声明一个外部函数 (extern可以省略,默认情况下声明和定义的函数都是外部函数)

static和extern对变量的作用:
static对变量的作用
 定义一个内部变量
 extern对变量的作用:
 声明一个外部变量

static修饰局部变量的使用场合

 1.如果某个函数的调用频率特别高

 2.这个函数内部的某个变量值是固定不变的

 static修饰局部变量

     1> 延长局部变量的生命周期:程序结束的时候,局部变量才会被销毁

     2> 并没有改变局部变量的作用域

     3> 所有的test函数都共享着一个变量b

全局变量分2种:

 外部变量:定义的变量能被本文件和其他文件访问

 1> 默认情况下,所有的全局变量都是外部变量

 2> 不同文件中的同名外部变量,都代表着同一个变量

 内部变量:定义的变量只能被本文件访问,不能被其他文件访问

 1> 不同文件中的同名内部变量,互不影响

0 0
原创粉丝点击