现在的位置: 首页 > 综合 > 正文

#ifdef,#ifndef,#if的用法随笔

2012年10月26日 ⁄ 综合 ⁄ 共 1114字 ⁄ 字号 评论关闭

#ifdnef,#ifdef,#if的用法简析

#ifdnef,#ifdef,#if都是用于防止重复编译的命令。

对于处理程序中提供了条件编译的功能。

常用的预处理命令介绍如下:

一:#include [ **.h]

                 指定的文件(file)插入到指令所在位置的代码处。通常用于包含头文件,是代码可以利用在别处定义的内容。

二:#define [key] [key_value]

                 制定键(key)的每次出现都用key_value替换。

                注意:#define(即宏定义)采用的是“傻瓜式”的替换,因此它往往很危险。在C++中采用const来定义常量,实现了与#define相同的功 能,而且功能要比#define强大的多。const在定义常量时可以指定常变量的类型。

三:#ifdef 标识符

            程序段1

     #else

              程序段2

      #endif

它的功能是:如果标识符为真,则操作(或是执行,或是把程序代码在预处理过程中插入到#include指定的位置)程序段一;否则执行程序段2。此时程序在编译时为二选一编译

        注意:#else部分可以没有。

四:#ifndef 标识符

             程序段1

       #endif

它的功能是:若标识符还没有被定义,即标识符为假,则操作程序段一(即#ifndef 和 #endif之间的程序段)。

防止文件重复包含的方法如下:

定义一个Class.h文件,此文件的功能是:声明用户自定义的类。

定义一个Class.cpp文件,此文件的功能是:定义用户自定义的类,即在此文件中把每个类中的成员函数的功能给实现了。

定义一个main.cpp文件,此文件为主函数所在的文件,即程序的入口文件。

分别在Class.cpp和main.cpp文件中包含Class.h文件,为了防止Class.h文件被重复包含,可以在Class.h中这样写代码:

    #ifndef 标识符

    #define 标识符

       程序段

    #endif

这样一来:当在

Class.cpp和main.cpp文件中第一次包含Class.h头文件时标识符未被定义,此时,预处理程序会把“#ifndef 标识符”和“#endif”之间的代码全部插入到#includes <Class.h>所在的位置。当Class.h被第二次包含的时候,标识符已经被定义,故此时会跳过“#ifndef 标识符”和“#endif”之间的代码,从而避免了重复包含。

注意:在避免重复包含时的“标识符”一般用头文件的名字,其中的“逗点”用“下划线”代替。

抱歉!评论已关闭.