条件编译ifndef、ifdef、endif

流过昼夜 提交于 2019-11-29 20:07:51

1、条件编译命令最常见的形式为:    

    #ifdef 标识符 
    程序段1 
    #else 
    程序段2 
    #endif 

当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即: 

1     #ifdef 
2     程序段1 
3     #endif 

2、条件编译命令另一种形式:    

1     #ifndef 标识符 
2     程序段1 
3     #else 
4     程序段2 
5     #endif 

只是第一行与第一种形式不同:将“ifdef”改为“ifndef”。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。

3、条件编译的例子

我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译:

1     #ifdef WINDOWS 
2     #define MYTYPE long 
3     #else 
4     #define MYTYPE float 
5     #endif 
6      

如果在Windows上编译程序,则可以在程序的开始加上 

1     #define WINDOWS 

    这样则编译下面的命令行: 
    #define MYTYPE long 
     
如果在这组条件编译命令之前曾出现以下命令行: 
    

1     #define WINDOWS 0 

    则预编译后程序中的MYTYPE都用float代替。

 

通常对于顶层的程序使用下面两条语句保证

底层程序中的条件编译的正常执行!

1      `ifndef GUARD_INTERFACE
2      `define GUARD_INTERFACE

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!