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

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

时间:2015-12-08 22:24:49      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

 

         ------- ios培训、 android培训、java培训、期待与您交流! ----------

 

一.编译预处理指令

源代码 -> 编译预处理 -> 编译 -> 链接 -> 运行

 编译预处理指令:在编译前进行解析处理的指令

 特点:所有编译预处理指令都以#开头

          所有编译预处理指令都不加分号

 

二.宏定义

1.不带参数的宏定义:  #define 宏名 值

1)在预编译的时候所出现宏名标识的地方都会被替换成宏名后面的值

 注意点:注释中的宏名不会被替换

            在字符串中出现的宏名不会被替换

(2)宏名的命名规范: 全部大写,有多个单词使用下划线隔开

2.带参数的宏定义: #define 宏名(参数列表)表达式

1)参数列表中的参数代入表达式中,然后替换出现宏名的地方

     注意点:参数列表中没有数据类型

             宏名与括号之间一定不要加空格

(2)带参数的宏定义与函数的区别:

             函数有调用过程,会开辟存储空间,花销比较大

             宏仅仅是一个替换的操作

(3)取消定义某个宏 #undef 

自己的理解:

1.做题的时候,要记住宏仅仅是一个替换操作

2.自己定义宏的时候,所有出现参数以及运算结果的地方都加上括号

3.不要在参数中使用自增自减和复合赋值运算符

 

三.条件编译:在编译的时候,条件满足就编译某段代码

1.格式: #if开头 #elif  #else  #endif结尾

特点:(1)条件编译中的条件只能由宏定义和常量组成,不能出现变量

         (2)在编译的时候进行判断

            使用场景:

            1. #indef 宏名

     //如果定义了某个宏就执行这里的语句

         #endif 

      2. #ifndef

      //如果没有定义某个宏就执行这里的语句

        #endif

     四.staticextern

      1.对局部变量的作用

         static:(1)延长变量的生命周期:从第一次执行开始直到文件退出

                   (2)定义的这一行代码仅仅执行一次

                   (3)不会改变变量的作用域

         extern:放在函数内部,仅仅是对全局变量的声明

       2.对全局变量的作用

           内部变量:仅能在本文件中访问的变量

           外部变量:可以再所有文件中被访问的变量

       static:声明或定义一个内部变量

      extern:声明或定义一个外部变量

        3.对函数的作用

          内部函数:仅能在本文件中使用的函数

          外部函数:可以在其他文件使用的函数,默认所有函数都是外部函数

          static:声明或定义一个内部函数

         extern:完整声明或定义一个外部函数

   

                       

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

标签:

原文地址:http://www.cnblogs.com/ly0709/p/5031003.html

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