当前位置: 首页 > 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 的程序。"

http://www.dtcms.com/a/132588.html

相关文章:

  • 展示数据可视化的魅力,如何通过图表、动画等形式让数据说话
  • 面试篇 - 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学习笔记(列表相关操作)
  • 供应商涨价,项目如何控制采购成本
  • ⑫交换机引流设备案例
  • What Was the “Game Genie“ Cheat Device, and How Did It Work?
  • ViT 模型讲解
  • 【Java八股】
  • 3.2.2.2 Spring Boot配置视图控制器
  • 机器学习项目三:颜色检测
  • Java老鼠迷宫(递归)---案例来自韩顺平老师讲Java
  • Neo4j GDS-11-neo4j GDS 库中相似度算法实现
  • 鸿蒙开发-ArkUi控件使用