zoukankan      html  css  js  c++  java
  • C/C++预编译指令和条件编译

    1. 常见的预编译指令和条件编译项有如下这些: 

    #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif

    1 #define            定义一个预处理宏
    2 #undef            取消宏的定义
    3 #if                   编译预处理中的条件命令,相当于C语法中的if语句
    4 #ifdef              判断某个宏是否被定义,若已定义,执行随后的语句
    5 #ifndef            与#ifdef相反,判断某个宏是否未被定义
    6 #elif                若#if, #ifdef, #ifndef等条件不满足,则执行
    7 #else              与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行
    8 #endif             #if, #ifdef, #ifndef这些条件命令的结束标志.
    9 defined          与#if, #elif配合使用,判断某个宏是否被定义

    2. #define介绍

    #define MACRO_NAME[args] [tokens]

    定义一个宏,args(参数)和tokens(标记)都是可选的,比如,

    #define PI 3.14

    #define DEBUG

    没有标记的宏,默认值是 1,

    之后出现的MACRO_NAME将被替代为所定义的标记

    宏定义,按照是否带参数通常分为对象宏、函数宏两种。
    对象宏: 不带参数的宏被称为"对象宏(objectlike macro)"。对象宏多用于定义常量、通用标识。例如:

    // 常量定义
    #define MAX_LENGTH 100
    // 通用标识,日志输出宏
    #define SLog printf
    // 预编译宏
    #define _DEBUG

    函数宏:带参数的宏。例如

    // 最小值函数
    #define MIN(a,b) ((a)>(b)? (a):(b))
    // 安全释放内存函数
    #define SAFE_DELETE(p) {if(NULL!=p){delete p; p = NULL;}}
  • 相关阅读:
    WebForms和MVC之间的抉择
    RPM install Error: Failed dependencies
    存储NAS和SAN
    python基础31[visualstudio2010来编写python程序]
    Linux系统性能检测
    perl的引用和>
    Linux内存高级 [swap/buffer]
    python类库26[web2py的URL映射]
    python类库31[python的libpath]
    VShpere中创建新Linux(ubuntu)的virtual machine
  • 原文地址:https://www.cnblogs.com/yulei0713/p/12803377.html
Copyright © 2011-2022 走看看