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

2010-7-1 16:38 4028 4 4 分类: MCU/ 嵌入式

#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”之间的代码,从而避免了重复包含。


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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条