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)的更多相关文章
- 面试问题4:C语言预处理包括哪些
问题描述:C语言 预处理包括哪些操作 C语言的三种预处理包括:宏定义(#define).文件包含(#include).条件编译(#if.#else.#endif). 对于宏定义的介绍: 宏定义必须写在 ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
- C 语言预处理
在嵌入式系统编程中,不管是内核的驱动程序还是应用程序的编写,都涉及到大量的预处理与条件编译,这样做的好处主要体现在代码的移植性强以及代码的修改方便等特性,因此引入了预处理与条件编译的概念.在C语言的程 ...
- C语言预处理指令的初步了解
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理是C语言的一个重要功能,它由预处理程序负责完成.当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分 ...
- C 语言入门第八章--C语言预处理命令
例如:#include ,这种以#号开头的命令称为预处理命令. ===C语言宏定义(#define的用法)==== #define 叫做宏定义命令,它也是C语言预处理命令的一种.所谓宏定义,就是用一个 ...
- C语言预处理理论2
C语言预处理理论1.头文件包含(1)#include <>和#include ""区别:<>专门用来包含系统提供的头文件(就是系统自带的,不是程序员自己写的 ...
- C语言预处理编译链接各个阶段错误,分阶段的说一下
C语言预处理编译链接各个阶段错误,分阶段的说一下 C语言预处理编译链接各个阶段错误,分阶段的说一下比如指针异常,数组下标越界什么的 我来答 1个回答 #热议# 你觉得这辈子有希望看到996消失 ...
- C语言预处理运算符
转自C语言预处理运算符 预处理还需要运算符?有没有搞错? ^_^, 没有搞错,预处理是有运算符,而且还不止一个: #(单井号) -- 字符串化运算符. ##(双井号 )-- 连接运算符 #@ ...
- Swift语言指南(三)--语言基础之整数和浮点数
原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...
随机推荐
- 异步get请求之Block方法
#import "ViewController.h" #import "Header.h" @interface ViewController ()<NS ...
- IOS 登陆界面的简单编写(通过NSNotificationCenter)
在介绍内容的之前,先看一下实现结果. 通过细节可以发现,只有当手机号与密码都输入的情况登录按钮才会变亮.那么这是怎么实现的呢? 首先我们要知道,这种情况的发生的首要条件便是每时每刻都知道两个TextF ...
- 响应式Web设计 – 布局
写在前面 去年上半年,我开始着手推动项目中响应式设计的落地.以官网优化需求为契机,主动去做了响应式的页面设计,也说服了产品.设计和开发的相关同事一起把它上线落实,但不幸的是,由于各种方面的原因,比如, ...
- centos 安装完Nginx后,为什么访问不了?
很多时候,安装完成后,服务也启动了 但是访问不了 看看是不是防火墙开启了: 本地试下端口是否可访问telnet 192.168.4.155 80 CentOS 7默认使用的是firewall作为防火墙 ...
- Erlang 虚拟机 BEAM 指令集之内存管理相关的指令
翻看 BEAM 虚拟机指令集的时候(在编译器源码目录下:lib/compiler/src/genop.tab),会发现有一些和内存分配/解除分配相关的指令,如下所示: allocate StackNe ...
- 对Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
- java 根据 根节点及所有子成员 构造树tree
实体类entity package com.ompa.biz.entity; import java.util.ArrayList; import java.util.List; public cla ...
- HTTP详解2-请求、响应、缓存
1. HTTP请求格式 做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干.HTTP协议传输的消息 ...
- 标准C IO函数和 内核IO函数 效率(时间)比较
前言 标准C提供的文件相关的IO函数,除标准错误输出是不带缓冲的(可以尽快的将错误消息显示出来)之外,所有与终端相关的都是行缓冲,其余都是全缓冲的. 我们可以使用setbuf,setvbuf改变指定流 ...
- NOIP2008普及组 题解 -SilverN
T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...