码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-05 00:45:51      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

预处理指令共有三种:

  • 宏定义;

  • 条件编译;

  • 文件包含;

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

  • 在代码翻译成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.多文件开发

技术分享

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

 

 

 

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

标签:

原文地址:http://www.cnblogs.com/unique-ios/p/4273621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!