当前位置: 首页 > news >正文

C语言编译预处理3

条件编译:是对源程序的一部分指定编译条件,满足条件进行编译否则不编译。

形式1

#indef  标识符

   程序段1

#else

  程序段2

#endif

标识符已经被定义用#ifdef

#include <stdio.h>

// 可以通过注释或取消注释下面这行来控制是否定义 DEBUG 宏
// #define DEBUG  定义标识符的操作 

#ifdef DEBUG
    // 如果已经定义 DEBUG 宏,执行此程序段
    #define MESSAGE "当前处于发布版本,无调试信息。"
#else
    // 如果未定义了 DEBUG 宏,执行此程序段
    #define MESSAGE "当前处于调试版本,可输出详细信息。"
#endif

int main() {
    printf("%s\n", MESSAGE);
    return 0;
}

形式2

#ifndef    标识符 

     程序段1 

#else 

     程序段2

#endif        

标识符未被定义用#indef

#include <stdio.h>

// 可以通过注释或取消注释下面这行来控制是否定义 DEBUG 宏
// #define DEBUG

#ifndef DEBUG
    // 如果未定义 DEBUG 宏,执行此程序段
    #define MESSAGE "当前处于发布版本,无调试信息。"
#else
    // 如果定义了 DEBUG 宏,执行此程序段
    #define MESSAGE "当前处于调试版本,可输出详细信息。"
#endif

int main() {
    printf("%s\n", MESSAGE);
    return 0;
}
//针对标识符DEBUG是否被定义,得到MESSAGE的值

形式3

#if   常量表达式

  程序段1

#else

 程序段2

#endif

如上所得若常量表达式为真执行程序1,否则执行程序2。

#include <stdio.h>

// 定义常量表达式的值
#define VERSION 2   //常量表达式被定义

#if VERSION == 1
    // 当 VERSION 等于 1 时,编译此程序段
    #define MESSAGE "这是版本 1 的程序。"
#elif VERSION == 2
    // 当 VERSION 等于 2 时,编译此程序段
    #define MESSAGE "这是版本 2 的程序。"
#else
    // 当 VERSION 既不等于 1 也不等于 2 时,编译此程序段
    #define MESSAGE "未知版本的程序。"
#endif

int main() {
    printf("%s\n", MESSAGE);
    return 0;
}
该程序输出   "这是版本 2 的程序。"

相关文章:

  • 展示数据可视化的魅力,如何通过图表、动画等形式让数据说话
  • 面试篇 - GPT-3(Generative Pre-trained Transformer 3)模型
  • 探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践
  • 26-JavaScript简介和基本使用(JavaScript)
  • 面试篇 - GPT-1(Generative Pre-Training 1)
  • 【分享】Ftrans文件摆渡系统:既保障传输安全,又提供强集成支持
  • 【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(一)
  • 机器视觉用消色差双合透镜
  • RockyLinux9 部署 Zabbix7 完整步骤
  • Springboot下载文件, 文件名中文是乱码, 空格变加号
  • Web前端开发——超链接与浮动框架(下)
  • 机器学习项目一:虚假新闻检测
  • yum安装MySQL数据库
  • MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移
  • Unified Modeling Language,统一建模语言
  • centOS 安装和配置docker
  • 《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》
  • 3.7 字符串基础
  • 树莓派第5代主板连接cis摄像头
  • Python学习笔记(列表相关操作)
  • 解密62个“千亿县”:强者恒强,新兴产业助新晋县崛起
  • “ChatGPT严选”横空出世了,“DeepSeek严选”还要等多久?
  • 央行召开落实金融“五篇大文章”总体统计制度动员部署会议
  • 体坛联播|安切洛蒂预计执教巴西国家队,利拉德确诊跟腱撕裂
  • 伊朗港口爆炸死亡人数升至70人
  • 伊朗港口爆炸已致40人死亡