黑马程序员----预处理指令(宏定义、条件编译、文件包含)

预处理指令共有三种:

  • 宏定义;

  • 条件编译;

  • 文件包含;

一、预处理指令的执行时刻:

  • 在代码翻译成0和1之前

二、预处理指令的特点:

1.预处理指令都是以#号开头;

2.预处理指令的位置可以随便写的;

3.预处理指令的作用域:从编写指令的哪一行代码开始,一直到文件结尾,或者遇到相应的#undef....

三、宏定义(#define)

1.不带参数的宏定义:

  • 例:

#define COUNT 4      //  注意:这里没有分号

  .......

#undef COUNT

  • 注意:

1.宏名一般用大写,或者以K开头

2.双引号里面的不参与替换;  如:char *name = "COUNT";  // 这里的COUNT不会参与替换

2.带参数的宏定义

  • 例:

#define pingfang(a) ((a) * (a))

  • 注意:

1.带参数的宏定义效率比函数高;

2.宏定义为纯粹的文本替换,不会参与运算,所以在定义又参数的宏定义时,参数和结果都要带上小括号(如上)

3.代码练习(注意陷阱)

运行结果:

四、条件编译(#ifdef/#if defined和#ifndef/#if !defined)

1.条件编译

  • 符合了某个条件,后面的代码才会进行编译,不符合就不会进行编译,相当于没有写
  • 注意:由于条件编译(预处理指令)都在代码编译前执行,条件的判断不能用代码里面的变量等,条件编译一般与宏定义一起使用;

2.定义

#define A 5

#ifdef A

  printf("哈哈哈");

#endif

  • 注意:只要写了#ifdef后面一定要写#endif,不然后果很严重,(条件若不成立,#ifdef后面的代码相当于全部不参与编译)

3.#if defined和#if !defined

  • #if defined (A) == #ifdef A    // A是宏名
  • #if !defined (A) == #ifndef A

五、文件包含(#include)

1. #include<文件名> 表示:系统自带的文件;

2.#include"文件名" 表示:自定义的文件;

3.不允许循环包含;如:a.h文件中包含b.h而b.h文件中又包含a.h;

4.多文件开发

  • 注意:采用文件名做宏名,因为文件名是唯一的;

时间: 2024-10-05 04:43:17

黑马程序员----预处理指令(宏定义、条件编译、文件包含)的相关文章

&lt;&lt;黑马程序员&gt;&gt;预处理指令

预处理命令 ①  宏定义    ②  条件编译    ③  文件包含 宏定义: #define  A  5       不带参数的宏       ①  所有的预处理命令都是以#开头:       ②  预处理命令在程序翻译成0和1之前将程序中的A替换成5:       ③  预处理的作用域是在预处理命令开始的那一行开始,到程序的结尾:       ④  宏名一般用大写或者以看k开头,变量名一般用小写:   #define pingfang(a)  ((a)*(a))       ①  带参数的宏

预处理指令--宏定义

预处理指令简介 •C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 •为了区分预处理指令和一般的C语句,所有预处理指令都以符号“#”开头,并且结尾不用分号 •预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾.习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 •C语言提供的预处理指令主要有:宏定义.文件包含.条

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

黑马程序员-预处理-枚举-typedef

预处理指令 格式: #define 宏名值 #define COUNT 6 //从该行开始一致到文件结束 1.所有的预处理指令都是以#开头 2.预处理指令分3种 1>宏定义 2>条件编译 3>文件包含 3.预处理指令在代码翻译成0和1之前执行 4.预处理的位置是随便写的 5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用  #undef COUNT 那么后面无法再调用COUNT 6.宏名一般用大写或者以k开头,变量名一般用小写 带参数的宏:

黑马程序员--Java基础学习笔记【文件操作、递归】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 文件操作 文件和目录路径名的抽象表示形式. 成员变量 StringpathSeparator= File.pathSeparator; // 路径分隔符 System.out.println(pathSeparator); // ; Stringseparator= File.separator;// 默认名称分隔符 System.out.println(separator); // \ 构造

黑马程序员-C学习笔记之预处理指令

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.什么是预处理指令 预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包含,条件编译. 预处理指令一般以 # 号开头,可以出现在文件的任何地方,作用于整个文件. 二.宏定义 宏定义分不带参数的和带参数的宏定义.     1?不带参数的宏定义 #import <stdio.h> #define AGE 10 // 宏名用大写 int ma

黑马程序员—10-宏定义、枚举、typedef

l 预处理指令简介 u C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 u 为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 u 预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾.习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 u C语言提供的预处理指令主要有

15-C语言预处理指令1-宏定义

预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾.习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 4.C语言提供的预处理指令主要有:宏