黑马程序员技术交流社区

标题: C语言--预处理指令 [打印本页]

作者: Jack-xie    时间: 2014-10-16 20:40
标题: C语言--预处理指令
预处理指令:
1. 所有的预处理指令都是以#开头,
2. 预处理指令是在代码翻译成0和1之前执行
3. 预处理的位置可以随便放,从那行开始有效,直到结尾,或者遇到#undef结束

宏定义:
宏定义比函数的效率高。

一、 不带参数的宏定义
格式:#define  宏名(一般大写或以k开头)  值
注意:宏定义后面没有分号。
举例:
#define NUM 5

二、 带参数的宏定义
格式:#define  宏名(参数)  参数表达式
最严谨的写法:#define sum(v1,v2) ((v1) + (v2))

三、 作用域
宏定义的位置可以在文件中的任意一行, 它的作用域从它所在那一行开始直到文件结束,或者到取消定义。
如果只需要在一段代码中使用宏定义,可以使用#undef来标记宏定义的结束。
#undef COUNT  // 取消宏定义. 从这行开始, 后面不再替换COUNT。

条件编译:
当我们希望程序中的一部分代码只有在满足一定条件时才被编译和执行,便可以使用条件编译。
因为条件编译只编译部分的代码,所以效率更高。

一、 格式:
#if  条件
        ......
#elif
        ......
#else
        ......
#endif    //#endif必须要写

二、 对条件的要求
1、 不能使用变量的值做条件
#if  a > 0   // 错误,因为编译前不知道a的值

2、 条件编译要用宏定义来做条件
#define NUM 10
#if NUM > 0  //正确,#define和#if都是预处理指令,编译前处理的

文件包含:
文件包含就是把一个文件的内容全部拷贝到另一个文件中。
#include < >
#include " "
通常把C语言的库函数用<>包含,自己写的头文件用 " " 包含。

使用注意:
当项目做大,会有很多.c文件一起编译,调用的.h(用来写函数的声明)文件可以这样写:
#ifndef WANGWU_H
#define WANGWU_H
作者: wehuazi    时间: 2014-10-16 22:02
写的不错,学习了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2