预处理器变量

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

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

         假设定义一个预处理器常量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"包含的头文件是自定义的头文件,编译器在包含该头文件的源文件所在的位置开始搜索,用户定义的头文件以文件方式保存。

   至于带后缀.h 和不带后缀的头文件得区别,C++标准化后的库文件包含的时候都不带后缀,并且增加了名字空间这个机制,简化了程序的编写,一般自己定义的头文件加上后缀,这个看个人爱好了


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值