zoukankan      html  css  js  c++  java
  • #ifdef #endif #if #endif

    c语言里所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作。

      #ifdef DEBUG

        printf("variable x has value = %d ",x);

      #endif


    #if和#endif是配对的,叫做条件编译指令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。
    比如这段程序,如果常量OS_CRITICAL_METHOD的值为3就编译下面的一条语句

    #ifdef 和 #if 效果是一样的,但是当你要判断复杂的条件时,只能用 #if

    #define BASIC_DEBUG 1
    #define EXTRA_DEBUG 2
    #define SUPER_DEBUG 4

    #if (DEBUG & EXTRA_DEBUG)
    printf...
    #endif
    当DEBUG = 0时,禁止所有调试信息,当DEBUG = 5时将启用BASIC_DEBUG和SUPER_DEBUG,但不包括EXTRA_DEBUG.

    另外也可在程序中添加如下语句。这样,当不需要调试时,就不必在命令行上定义DEBUG宏:
    #ifndef DEBUG
    #define DEBUG 0
    #endif

    #ifndef x             //先测试x是否被宏定义过,if not define 的缩写。
    
    
    #define x
    
    
    程序段 1                //如果x没有被宏定义过,定义x,并编译程序段 1
    
    
    #endif
    
    
    程序段 2               //如果x已经定义过了则编译程序段2的语句,“忽视”程序段 1。
     
  • 相关阅读:
    感知器算法--python实现
    PHP appserv + ZendStudio12.5.1 + 注册码
    第九周-每周例行报告
    第八周-每周例行报告
    感谢THUNDER
    第七周-每周例行报告
    第六周-每周例行报告
    第五周-每周例行报告
    第四周-四则运算试题生成
    第四周-单元测试
  • 原文地址:https://www.cnblogs.com/cj2014/p/3738420.html
Copyright © 2011-2022 走看看