C# 图解教程 第5版 —— 第24章 预处理指令
文章目录
- 24.1 什么是预处理指令
- 24.2 基本规则
- 24.3 符号指令(#define、#undef )
- 24.4 条件编译(#if、#else、#elif、#endif)
- 24.5 条件编译结构
- 24.6 诊断指令(#warning、#error)
- 24.7 行号指令(#line)
- 24.8 区域指令(#region、#endregion)
- 24.9 警告开关指令(#pragma warning)
24.1 什么是预处理指令
C# 中没有实际的预处理程序,“预处理”指令由编译器处理,但这个术语被保留了下来。
24.2 基本规则
- 预处理指令必须和 C# 代码在不同的行。
- 预处理指令不需要以分号结尾。
- 包含预处理指令的每一行必须以“#”字符开始。
- “#”字符前可以有空格。
- 在“#”字符和指令之间可以有空格。
- 允许行尾注释。
- 预处理指令所在的行不允许有分隔符注释。
表 24.1 列出了预处理指令。
24.3 符号指令(#define、#undef )
编译符号是只有两种可能状态的标识符,要么被定义,要么未被定义。其具有如下特性:
- 可以是任何标识符(除 true 和 false 外),包括关键字,以及在 C# 代码中声明的标识符。
- 它没有值,不表示字符串。
- #define 声明一个编译符号。
- #undef 取消定义一个编译符号。
#define 和 #undef 只能用在源文件的第一行,即任何 C# 代码之前。
重复定义已存在的编译符号是被允许的。
定义一个标识符相当于将其值设置为 true,取消定义一个标识符相当于设置其值为 false。
24.4 条件编译(#if、#else、#elif、#endif)
条件编译允许根据某个编译符号是否被定义,来标注一段代码是否被编译或跳过。
- #if
- #else
- #elif
- #endif
24.5 条件编译结构
#if 和 #endif 需要配对使用,有 #if 指令,则必须有配对的 #endif 指令。
#if 和 #if … #else 结构
#if … #elif 和 #if … #elif … #else
24.6 诊断指令(#warning、#error)
诊断指令产生用户自定义的编译时警告及错误消息,其语法如下。需要注意,Message 是字符串,但不需要被引号包围。
当编译器遇到诊断指令时,会输出相关消息。诊断指令的消息会和编译器产生的警告和错误消息列在一起。
- #error 指令在 #if 结构中,只有满足 #if 条件时才会生成错误消息:“构建失败”。
- #warning 用于提醒程序会回头来清理一段代码。
24.7 行号指令(#line)
行号指令可以做如下事情:
- 改变编译器警告和错误消息报告的出现行数;
- 改变被编译源文件的文件名。
- 对交互式调试器隐藏一些行。
例如:
24.8 区域指令(#region、#endregion)
区域指令允许标注和有选择性地命名一段代码。区域由一个 #region 指令和其下方某处的一个 #endregion 指令构成。区域功能能够更轻松地浏览和组织代码。
例如,下面的代码定义了区域 Constructors,包含 2 个构造函数 MyClass。如果不想查看其中的代码,可以在 Rider 中将其折叠为一行。
24.9 警告开关指令(#pragma warning)
使用 #pragma warning 指令可以关闭或重新开启警告消息。
- disable:关闭警告消息。
- restore:开启警告消息。
关闭/开启特定警告消息
例如,下面的代码关闭 2 个警告消息 618 和 414,之后又开启了 618 警告消息。
关闭/开启所有警告消息
若不带任何数字列表,则命令会应用于所有警告。

相关文章:
C# 图解教程 第5版 —— 第24章 预处理指令
文章目录 24.1 什么是预处理指令24.2 基本规则24.3 符号指令(#define、#undef )24.4 条件编译(#if、#else、#elif、#endif)24.5 条件编译结构24.6 诊断指令(#warning、#error)24.7 行号指令(#li…...
电商几乎每一次的调整,几乎都围绕着AI展开
在那个马云依然还掌舵着阿里这艘大船的年月里,因其天马行空的想法,在很多时候总是被冠以「外星人」的名头。 站在今天来看,所谓的「外星人」,或许更多地和当下风靡的「AI」有很多相似之处吧。 他,能洞察商业的内在规…...
[Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量
文章目录 1、进程优先级1.1 Linux下查看进程优先级1.2 Linux 进程优先级的修改PRI and NItop命令配合操作更改优先级 1.3 竞争 独立 并行 并发 2、进程间切换3、Linux2.6内核进程调度队列3.1 活跃进程3.2 过期进程 4 main函数参数 — 命令行参数4.1 利用main函数的参数实现一个…...
【Java 设计模式】设计原则之单一职责原则
文章目录 1. 定义2. 好处3. 应用4. 示例结语 在软件开发中,设计原则是创建灵活、可维护和可扩展软件的基础。 这些原则为我们提供了指导方针,帮助我们构建高质量、易理解的代码。 ✨单一职责原则(SRP) ✨开放/封闭原则(…...
实现导航栏吸顶操作
一、使用VueUse插件 // 安装 npm i vueuse/core二、点击搜索useScroll 2.1搜索结果如图 三、使用 // 这是示例代码 import { useScroll } from vueuse/core const el ref<HTMLElement | null>(null) const { x, y, isScrolling, arrivedState, directions } useSc…...
Docker简述与基础部署详解
目录 docker概述 docker的核心思想 docker三大组件 docker优势 容器和虚拟机之间的区别 容器在内核中支持的重要技术 命名空间(Namespaces) 控制组(Control Groups,cgroups) 写时复制技术(Copy-on…...
(南京观海微电子)——色温介绍
色温是表示光线中包含颜色成分的一个计量单位。从理论上说,黑体温度指绝对黑体从绝对零度(-273℃)开始加温后所呈现的颜色。黑体在受热后,逐渐由黑变红,转黄,发白,最后发出蓝色光。当…...
入门Linux简单操作
基本命令 scp ✓ scp -r 文件 127.0.0.1:/root/文件 (source->>>>destination) mv cp ✓ cp xxxx ./xxxx date ✓ 修改时间 date -s “yyyy-MM-dd 12:12:59” find ✓ find /home/user -name “*.txt” grep ✓ 管道 软连接 多用户 免密设置 脚…...
操作系统复习 一、二章
操作系统复习 一、二章 文章目录 操作系统复习 一、二章第一章 计算机系统概述处理器中各寄存器的作用指令的执行过程中断存储器层次结构和CacheI/O 通信技术 第二章 操作系统概述大内核微内核大内核微内核 操作系统的定义、目标和功能定义目标和功能 操作系统的发展过程现代操…...
【国内访问github不稳定】可以尝试fastgithub解决这个问题
1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载) 2、安装 如下图双击启动即可 3、…...
android:clickable=“false“无效,依然能被点击
android:clickable“false”依然能被点击,该属性意义何在? 在Android中,android:clickable 属性用于指定一个视图(View)是否可以被点击。当你设置 android:clickable"true" 时,表示该视图可以接…...
Springboot WebFlux项目结合mongodb进行crud
第一步:创建项目 第二步:给mongodb插入数据 第三步:创建实体类 package org.cyl.test02.entity;// Task.java import lombok.Data;Data public class Task {private String id;private String description; }第四步:创建Reposito…...
超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放
引言:基于空中物流的项目背景。我们提供了使用基于诗句的物体识别和精准投放、降落。实现原理如下: 1、在ROS下使用机载电脑实现物体识别 2、记载电脑根据反馈的位置发布运动控制指令 3、PX4解析机载电脑发布的命令,作出运动控制 4、设置…...
Flask 小程序菜品搜索
mina/pages/food/index.wxml <!--index.wxml--> <!--1px 750/320 2.34rpx;--> <view class"container"><!--轮播图--><view class"swiper-container"><swiper class"swiper_box" autoplay"{{autoplay}…...
Excel·VBA按指定顺序排序函数
与之前写过的《ExcelVBA数组冒泡排序函数》不同,不是按照数值大小的升序/降序对数组进行排序,而是按照指定数组的顺序,对另一个数组进行排序 以下代码调用了《ExcelVBA数组冒泡排序函数》bubble_sort_arr函数(如需使用代码需复制…...
数据结构学习笔记——查找算法中的树形查找(红黑树)
目录 一、红黑树的定义(一)黑/红结点、叶子节点(二)黑色完美平衡 二、红黑树的性质(一)黑高和高度(二)叶子结点个数 三、红黑树与AVL对比 一、红黑树的定义 红黑树是一棵二叉排序树…...
Debezium发布历史66
原文地址: https://debezium.io/blog/2019/07/25/debezium-0-10-0-beta3-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.10.0.Beta3 发布 七月 25, 2019 作者: Jir…...
Redis系列之使用Lua脚本
什么是lua脚本? lua语言是一个轻量级的脚本语言,可以嵌入其他语言中使用,调用宿主语言的功能。lua语法简单,小巧,源码一共才200多K,本身不会有太强的功能,很多的语言也支持lua语言,…...
Wargames与bash知识16
Wargames与bash知识16 Bandit24 关卡提示: 一个守护进程正在端口30002上侦听,如果给定bandit24的密码和一个4位数的密码,它将为您提供bandit25的密码。没有办法检索pincode,除非遍历所有10000个组合,称为暴力强制。您…...
关于运维·关于数据库面试题
目录 一、数据库类型 二、数据库引擎 三、mysql数据库类型 四、mysql的约束添加 五、主从复制原理 六、主从方式有几种 七、mysql主从数据不一致的原因 八、mysql的优化 九、什么是事务的特征 十、数据库读写分离的好处 十一、怎样优化sql语句 十二、mysql的同步方…...
PCB设计实战:数字模拟隔离的元件抉择——从0Ω电阻到磁珠的精准应用
1. 数字模拟隔离的基础原理与挑战 在混合信号电路设计中,数字电路和模拟电路就像两个性格迥异的邻居。数字电路工作时会产生高频开关噪声,就像隔壁装修时的电钻声;而模拟电路对噪声极其敏感,如同正在录音的麦克风。这时候…...
指尖藏趣,抽享惊喜——扭蛋机抽赏盲盒小程序前端功能详解
抽赏盲盒所带来的未知惊喜与收集乐趣,深受不同年龄段用户的喜爱,扭蛋机抽赏盲盒小程序则打破线下场景限制,让这份乐趣随时可及。该小程序前端功能以“简约操作、趣味体验”为核心,聚焦用户可直接操作的功能板块,简化流…...
EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践
EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 EDK II作为现代、功能丰富的跨平台UEFI和PI规范固件开发环境,其代码质量门禁系统是确保固件可靠性和安全…...
喜马拉雅FM专辑下载器:离线收听与个人音频管理的实用方案
喜马拉雅FM专辑下载器:离线收听与个人音频管理的实用方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 如果您经常收…...
ColorMemLCD电子纸驱动库:面向LPM013M126A的嵌入式低功耗显示方案
1. ColorMemLCD 库概述ColorMemLCD 是一款专为 JDI(Japan Display Inc.)LPM013M126A 型彩色内存式 LCD 显示模块设计的嵌入式图形驱动库。该库并非从零构建,而是继承自 ARM mbed OS 生态中广泛使用的GraphicDisplay抽象基类,延续了…...
SYNBO AMA 回顾|当稳定币突破 3000 亿,一级的“钱”到底在往哪里流?
一、 聊了什么:背景与主题时间:2026 Mar 25 (Wed) 20:00 UTC8主题: Stablecoins Primary Market: The New Capital Stack Powering Global Payments in 2026在昨晚举行的一场围绕“稳定币、PayFi 与全球支付”的 AMA 中,SYNBO 与…...
FJSP:蛇鹫优化算法(SBOA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码
FJSP:蛇鹫优化算法(SBOA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码当车间调度遇上非洲大草原的蛇鹄,会碰撞出什么样的火花?今天咱们用MATLAB实现一种新颖的群智能算法——蛇鹄…...
云效流水线实战:从零部署Java应用到阿里云ECS(含完整脚本)
云效流水线实战:从零部署Java应用到阿里云ECS(含完整脚本) 在当今快节奏的软件开发环境中,自动化部署已成为提升团队效率的关键环节。阿里云云效平台提供的流水线功能,为开发者提供了一套完整的CI/CD解决方案ÿ…...
Eclipse Mraa多平台支持:从树莓派到Intel Joule的无缝移植教程
Eclipse Mraa多平台支持:从树莓派到Intel Joule的无缝移植教程 Eclipse Mraa是一款开源的嵌入式Linux库,专为简化Raspberry Pi、Intel Joule等嵌入式设备上的GPIO、I2C、SPI和UART等硬件接口访问而设计。通过统一的API和跨平台兼容性,开发者…...
java毕业设计基于springboot+vue的电影院座位管理系统
前言 该系统旨在实现电影院座位的高效管理,包括座位预订、售票、座位状态实时监控等功能。通过该系统,电影院可以提高售票效率,优化座位使用率,同时为顾客提供便捷的购票体验。 一、项目介绍 开发语言:Java 框架&…...
