关于ifndef的认识

来源:互联网 发布:淘宝里实名认证在哪 编辑:程序博客网 时间:2024/06/11 00:16

今天看了一段程序,里面有 #ifndef ... 这个标识符。

#ifndef 一般是和 #endif 结合使用的,一般的,当一个文件包含几个头文件时,而且每个头文件都可能定义了相同的宏,使用#ifndef可以防止对该宏重复定义。

#ifndef x 
  //先测试x是否被宏定义过,#ifndef的反义词是#ifdef #ifndef通常定义以前从未定义过的常量。没错是常量!!

#endif 

  //如果已经定义了则编译#endif后面的语句 


条件指示符#ifndef 检查预编译常量在前面是否已经被宏定义。如果在前面没有被宏定义,则条件指示符的值为真,于是从#ifndef 到#endif 之间的所有语句都被包含进来进行编译处理。相反,如果#ifndef 指示符的值为假,则它与#endif 指示符之间的行将被忽略。

条件指示符#ifndef  最主要目的是防止头文件的重复包含和编译。


const 与 #define的比较 
    C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点: 
(1)       const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。 
 
(2)       有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调

0 0