C语言 条件编译宏

一、具体代码与分析如下

cpp 复制代码
#include <stdio.h>

/*
1.C语言的条件编译宏是预处理阶段的指令,用于根据指定条件决定代码段是否参与编译;
2.#ifdef MACRO/#endif:判断 MACRO 是否被#define定义;
3.#ifndef MACRO/#endif:判断 MACRO 是否未被定义;
4.#if/#elif/#else/#endif:判断常量表达式是否为真;
5.#if defined(MACRO):结合#if和定义判断。
*/
int main()
{
/*********************************/
#undef DEBUG
#define DEBUG  
#ifdef DEBUG
printf("#define DEBUG 输出\n");
#endif  //结束条件编译块,是必备的闭合指令

/*********************************/
#undef DEBUG1
#ifndef DEBUG1
printf("#undef DEBUG1 输出\n");
#endif  //结束条件编译块,是必备的闭合指令

/*********************************/
#define PLATFORM 3
//#undef PLATFORM
#if PLATFORM == 1
#define OS "Linux"
#elif PLATFORM == 2
#define OS "Windows"
#elif PLATFORM == 3
#define OS "macOS"
#else
#define OS "Unknown"
#endif

/*
#define  PLATFORM 1 输出OS为:"Linux"
#define  PLATFORM 2 输出OS为:"Windows"
#define  PLATFORM 3 输出OS为:"macOS"
	都不定义 输出OS为:"Unknown"
	*/
printf("OS:%s\n",OS);

/*********************************/
//#define ARMv7
#define ARMv8
#if defined(ARMv7) || defined(ARMv8)
#define HAS_CAN 1
#define HAS_ETH 1
#elif defined(x86) 
#define HAS_CAN 0
#define HAS_ETH 0
#endif
    /*
    #define  ARMv7 或 #define ARMv8输出OS为:"HAS_CAN:1,HAS_ETH:1"
    #define  x86   输出OS为:"HAS_CAN:0,HAS_ETH:0"
    都不定义 输出OS为:"Unknown"
    */
printf("HAS_CAN:%d,HAS_ETH:%d\n", HAS_CAN, HAS_ETH);
return 0;
}
相关推荐
Shadow(⊙o⊙)3 分钟前
QT常用控件3.0,font字体设置,toolTip提示,focusPolicy焦点定位原则,中型控件StyleSheet样式表。
服务器·开发语言·前端·c++·qt
Shadow(⊙o⊙)6 分钟前
QT常用控件2.0,windowOpacity窗口透明度,Cursor光标设置
开发语言·c++·qt
cfm_29149 分钟前
JVM对象逃逸分析深度详解
java·开发语言·jvm
SilentSamsara9 分钟前
LLM API 工程化:OpenAI/DeepSeek/国产模型统一调用层设计
开发语言·人工智能·python
aaaameliaaa11 分钟前
分支与循环
c语言·笔记
weixin_5231853215 分钟前
SimpleDateFormat为什么线程不安全?源码级解析与解决方案
java·开发语言·安全
神仙别闹15 分钟前
基于C语言处理机调度算法的实现
服务器·c语言·算法
Chase_______18 分钟前
【Java杂项】Java 中的 null:空指针、自动拆箱与集合边界详解
java·开发语言
j7~18 分钟前
【C++】STL--string类--拆析解剖string以及string类的底层详解(1)
开发语言·c++·ascii编码·string类·auto和范围for
techdashen21 分钟前
Rust 项目管理动态 — 2026 年 2 月
开发语言·后端·rust