标签:-- 包含 cpp 求值 结果 name define logs pre
符合条件,才进行编译。不符合条件的部分,直接忽略,根本不对其进行编译,能大大的提高效率。
主要有两种方式 : (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结束了。就从根源上避免了 多重引用的问题。
标签:-- 包含 cpp 求值 结果 name define logs pre
原文地址:http://www.cnblogs.com/mokang0421/p/7529213.html