<C和指针---读书笔记16>

条件编译

符合条件,才进行编译。不符合条件的部分,直接忽略,根本不对其进行编译,能大大的提高效率。

主要有两种方式 :    (1)  #if expressition   看表达式结果。

                                  (2)   #ifdef  xxx         看是否有过define xxx行为。

(1) #if  expression  首先对这个表达式求值,若为真,则进行接着往下走。

#if expression1
   .....
#elif  expression2
   .....
#else
   ....
#endif

  

(2) #ifdef  xxx : 首先检查之前是否有过 define xxx的操作, 不关心把xxx define成什么,即使define成空,也无所谓。

文件包含

#include <标准库>    或者   #include “自定义库”  

对于自定义的库,即my.h文件,需要特别注意一个地方。 

 my1.h 里面嵌套 include了 my_printf.h文件。my_printf.h又include了 my1.h。这时就造成了死循环了。

或者顶层.h  #include了若干次my_printf.h文件,这时就会有风险。

为了避免这种风险: 我们统一要求 .h文件写法:

#ifndef _FILE_H_NAME_
  #define    _FILE_H_NAME_  1
     /*--------------------------*/
              声明各种东西
     /*--------------------------*/
#endif

  在预编译阶段,第一次#include该文件时,因为从未有过 #define _FILE_H_NAME_行为,所以此时会进行#define操作。

假如有第二次声明,因为之前已经#define,就直接#endif结束了。就从根源上避免了 多重引用的问题。

 

原文地址:https://www.cnblogs.com/mokang0421/p/7529213.html