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

预处理器变量

时间:2015-05-28 09:39:33      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:预处理器变量   预处理器常量   包含头文件的两种写法   

   预处理器变量,在有的书中又叫预处理器常量,都是一个意思

  •     为了避免名字冲突,习惯上处理器变量的所有字母一律大写
  •     预处理器变量在整个程序中是唯一的
  •     预处理器变量只有两种状态,已定义或未定义,用于避免头文件的多重包含而引起的重复定义  

         假设定义一个预处理器常量SALESITEM_H,可以用如下方式来预防多次包含同一头文件:

     #ifndef SALESITEM_H
     #define SALESITEM_H
     // Definition of Sales_itemclass and related functions goes here
     //....
     //..
     #endif
     条件指示

    #ifndef SALESITEM_H
     测试 SALESITEM_H 预处理器变量是否未定义。如果 SALESITEM_H 未定义,那么#ifndef 测试成功,跟在#ifndef 后面的所有行都被执行,直到发现#endif。相反,如果SALESITEM_H 已定义,那么#ifndef 指示测试为假,该指示和#endif 指示间的代码都被忽略。

     举个例子:

       定义一个头文件

      test_A.h

      test_B.h

       程序源文件为

      main.c

        如果头文件test_A.h中包含test_B.h,而在源文件中又包含头文件test_A.h和 test_B.h,这时你就会发现在源文件中test_B.h被包含了两次,一次是直接包含,一次是包含test_A.h时间接包含的,如果 test_B.h中有类的定义,这时就会发生重定义这样低级的错误。有些同学就有疑问了,你明明知道了test_B.h已经在test_A.h中包含过了为什么还要在源文件中再次包含test_B.h呢?这不是多此一举吗?我想告诉你的是当你的程序比较庞大时,你就不会这样想了,头文件多的让你头皮发麻,你压根就看不出来他们之间的包含关系。



    顺便在说说  #include<test.h>和#include"test.h"的区别

    #include<test.h>包含的头文件是标准库头文件,编译器会在设定好的路径搜索test.h头文件,系统头文件可能以文件方式保存,也可能以系统特有的其他格式保存。

    #include"test.h"包含的头文件是自定义的头文件,编译器在包含该头文件的源文件所在的位置开始搜索,用户定义的头文件以文件方式保存。


预处理器变量

标签:预处理器变量   预处理器常量   包含头文件的两种写法   

原文地址:http://blog.csdn.net/u014041012/article/details/46056107

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