#define #ifdef #endif的用法

使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。

 

#ifdef XXX
此处是希望发生变化的条件,如包含一个头文件
#endif 

 

#include "iostream.h" int main() { #ifdef DEBUG cout<< "Beginning execution of main()"; #endif return 0; } 

运行结果为:Press any key to continue 

改写代码如下:

#include "iostream.h" #define DEBUG int main() { #ifdef DEBUG cout<< "Beginning execution of main()"; #endif return 0; }  

运行结果为:Beginning execution of main()
Press any key to continue

 

更一般的情况是,把上面的#define DEBUG 包含在一个特定的头文件中。

比如,新建头文件head.h,在文件中加入代码:

#ifndef DEBUG #define DEBUG #endif 

而在define.cpp源文件中,代码修改如下:

#include "iostream.h" #include "head.h" int main(){ #ifdef DEBUG cout<< "Beginning execution of main()"; #endif return 0; }  

运行结果如下:Beginning execution of main()
Press any key to continue 

 

 

一个典型的用法是Extern “C” 

利用C++宏 __cplusplus 


(1)Max.h*

 

#ifndef _MAX_H_ #define _MAX_H_ #ifdef __cplusplus extern "C"{ #endif extern int max(int x, int y); #ifdef __cplusplus } #endif #endif  

 

(2)Max.c

 

#include “Max.h” int max(int x, int y) { return x>y?x:y; }  

 

(3)Test.cpp

 

 

#include "Max.h" int main(void) { int a=2, b=90; int c = 0; c = max(a,b); }  

 

因为C中没有定义__cplusplus宏,所以在C编译器看来,Max.h为: 
extern int max(int x, int y); 
而在c++看来,Max.h为: 
extern "C"{
extern int max(int x, int y);

你可能感兴趣的:(C/C++)