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;
}
相关推荐
znsoft12 小时前
MaClaw(码卡龙)技术拆解:一个 Go + React 的可自进化智能体平台
开发语言·react.js·golang
凉茶钱14 小时前
红黑树:用“颜色”换“平衡”,set 与 map 的底层发动机
开发语言·c++·红黑树
高冷小鱼殿下14 小时前
内部类Lambda与枚举
java·开发语言
shelly聊外贸14 小时前
WhatsApp 聊天记录如何导出为 CSV?使用 Python 进行数据分析
开发语言·python·数据分析
octopus_c15 小时前
C++ 模板详解:函数模板、类模板、特化与分离编译
开发语言·c++·算法
椒颜皮皮虾྅16 小时前
让文档不止于文字:DeploySharp + PP-Structure,打通版面分析与表格重建
开发语言·学习·c#·.net·cuda
Eider199816 小时前
Python基础知识之并发相关-2
开发语言·前端·python
第九序言T16 小时前
Python 数据处理进阶(二十二)用 Pandas 做一次完整的用户行为分析
开发语言·python·数据分析·pandas
云和数据.ChenGuang16 小时前
再论深拷贝和浅拷贝
开发语言·人工智能·python·1024程序员节
晚风予卿云月17 小时前
【C++高并发内存池】 2.ThreadCache设计
开发语言·c++·高并发内存池·tcmalloc