C语言 预处理三(条件编译--#if)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 预处理三(条件编译--#if)相关的知识,希望对你有一定的参考价值。

//#if  条件编译
//一般用于产品各个版本的语言包
#include<stdio.h>
#include<stdlib.h>

//#都是预处理指令,条件表达式必须在预处理里面
//所以条件表达式必须是宏表达式

//双分支条件编译
//#if 条件表达式
//代码段1
//#else
//代码段2
//#endif

//#endif结束条件编译
//#if,#else和C语言里的if else功能一样,但是时间开销不一样
//if else会编译所有的代码,源码会较长,编译时间会较长
//程序体积大,占用更多内存,运行时间长
//#if,#else只编译符合条件的语句,有效减少被编译的语句,
//缩短源码长度,缩短程序执行时间

//多分支条件编译
//#if 条件表达式1
//代码段1
//#elif 条件表达式2
//代码段2
//#elif 条件表达式3
//代码段3
//#elif 条件表达式4
//代码段4
//#else
//代码段5
//#endif

//检测宏是否定义
//#ifdef 宏定义
//代码段1
//#endif

//#ifdef M 检测M这个宏是否定义,定义了就执行代码段1,没有定义就不执行任何操作
//#ifdef一般用于开启某个功能

//检测宏是否定义
//#ifndef 宏定义
//代码段1
//#endif
//#ifndef M 检测M这个宏是否定义,没有定义就执行代码段1,定义就不执行任何操作
//#ifndef一般用于开启某个功能或者include 重包含排错

//例如
//#ifndef OPENS
//#define OPENS
////定义函数或者执行操作,这样就不可能重复的定义函数或者操作了,因为如果已经定义了就不会执行这段代码
//#endif




#define LANGUA ‘d‘

void main(){
    //双分支条件编译
#if LANGUA==‘e‘//这里的条件表达式是宏表达式
    printf("我是字符e,求各位大哥放过小弟一马!\n");
#else
    printf("我就是老大,你们想造反吗!\n");
#endif

    //多分支条件编译
#if LANGUA==‘e‘//这里的条件表达式是宏表达式
    printf("我是字符e,求各位大哥放过小弟一马!\n");
#elif LANGUA==‘d‘
    printf("我是字符d,是你们马大哥的小弟!\n");
#else
    printf("我就是老大,你们想造反吗!\n");
#endif

    //检测宏是否定义
#define M
#ifdef M
    system("color 3f");
#endif

    //检测宏是否定义
#ifndef N
    system("title nihao");
#endif

    system("pause");
}

 

技术分享

 

以上是关于C语言 预处理三(条件编译--#if)的主要内容,如果未能解决你的问题,请参考以下文章

SDWebImage源码阅读前的准备预处理条件编译

c语言编程中出现的纠错英文语句是什么意思?

C 语言中#if 0

条件编译使用分析

C语言学习笔记--条件编译

C语言_宏