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;}}
  • 相关阅读:
    .net core 认证与授权(三)
    .net core 认证与授权(二)
    .net core 认证与授权(一)
    算法常识——快速排序
    ip 在网络传输中是如何传递的
    打开c++ 项目遇到的错误
    算法常识——鸡尾酒排序
    算法常识——冒泡排序
    算法常识——排序汇
    Tomcat 生产服务器性能优化
  • 原文地址:https://www.cnblogs.com/yulei0713/p/12803377.html
Copyright © 2011-2022 走看看