欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

#if, #ifdef, #ifndef, #else, #elif, #endif的用法

发布时间:2023/12/20 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 #if, #ifdef, #ifndef, #else, #elif, #endif的用法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

#ifdef的用法

   灵活使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。
代码举例:新建define.cpp文件

  • #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语句是包含在一个特定的头文件中。
    比如,新建头文件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
    结论:通过使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码

     

    #if, #ifdef, #ifndef, #else, #elif, #endif的用法:

      这些命令可以让编译器进行简单的逻辑控制,当一个文件被编译时,你可以用这些命令去决定某些代码的去留,

    这些命令式条件编译的命令。

    常见的条件编译的三种形式:

    ①第一种形式:  
    #if defined(或者是ifdef)<标识符(条件)> 

    <程序段1>

    #endif  
    ②第二种形式:  
    #if !defined(或者是ifndef)<标识符(条件)> 

    <程序段1> 

      #ifdef … 

    [#elif … ] 

    [#elif …] 

    #else …  

    #endif

    示例:

    #include <iostream>

    using namespace std;

    int main() 

    #if DEBUG  /*或者是#ifdef DEBUG*/ 
    cout << "条件成立,DEBUG已经定义了!" <<endl; 
    #else 
    cout << "条件不成立,DEBUG还没定义" <<endl; 
    #endif 
    return 0; 
    }

    //结果输出: 条件不成立,DEBUG还没定义

    //如果是添加了#define DEBUG ,输出结果是:条件成立,DEBUG已经定义了!

    #include <iostream> 
    using namespace std; 
    #define DEBUG 
    int main() 

    #ifdef DEBUG /*或者是#ifdef DEBUG*/ 
    cout << "条件成立,DEBUG已经定义了!" <<endl; 
    #else 
    cout << "条件不成立,DEBUG还没定义" <<endl; 
    #endif 
    return 0; 
    }

    //要注意的是,如果是#define 宏名,没有宏体如 #define DEBUG,就必须使用#ifdef或#ifndef与之对应,

    //如果是#define 宏名 宏体,如 #define NUM 1,#if 和#ifdef都可以使用。

    /*

    #define的用法:

    */

    示例二:

    #include <iostream> 

    using namespace std; 
    #define NUM  10 
    int main() 

            #ifndef NUM 
            cout << "NUM没有定义!"<<endl; 
            #elif NUM >= 100 
            cout << "NUM >100" <<endl; 
            #elif NUM <100 && NUM >10 
            cout << "10 < NUM < 100" <<endl; 
            #elif NUM == 10 
            cout << "NUM ==10" <<endl; 
            #else 
            cout << "NUM < 10" << endl; 
            #endif 
            return 0; 

    //输出NUM ==10 

     

     

     

    也可以在mk文件定义NUM

    ifeq ($(BOARD_SCREENRECORD_LANDSCAPE_ONLY),true)
    LOCAL_CFLAGS += -DNUM
    endif

    总结

    以上是生活随笔为你收集整理的#if, #ifdef, #ifndef, #else, #elif, #endif的用法的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。