宏定义与条件编译的用处


   #define     定义宏

    #undef      取消已定义的宏

    宏定义常量与命令可以避免幻数 在宏定义命名时候应该尽量清楚表明其用途。

函数型宏定义的有点:尽管其和真正的函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧,传参,传返回值等一系列工作

                                         因此那些简短并且被频繁调用的函数经常用函数型宏定义来代替实现。



     #if         如果给定条件为真,则编译下面代码

    #ifdef      如果宏已经定义,则编译下面代码
    #ifndef     如果宏没有定义,则编译下面代码
    #elif       如果前面的#if给定条件不为真,当前条件为真,则编译下面代码,其实就是else if的简写
    #endif      结束一个#if……#else条件编译块


#ifdef 和 #ifndef这二者主要用于防止重复包含。我们一般在.h头文件前面加上这么一段:

 
//头文件防止重复包含
//funcA.h
#ifndef FUNCA_H
#define FUNCA_H
//头文件内容
#end if
这样,如果a.h包含了funcA.h,b.h包含了a.h、funcA.h,重复包含,会出现一些type redefination之类的错误。
#if defined等价于#ifdef; #if !defined等价于#ifndef

你可能感兴趣的:(C语言)