CS4L19——预处理器指令
CS4L19——预处理器指令
本章代码关键字
1 |
|
编译器
编译器是一种翻译程序,它用于将源语言程序翻译成目标语言程序
- 源语言程序:某种程序设计语言写成的,比如 C#、C、C++、Java 等语言写的程序
- 目标语言程序:二进制数标识的伪机器代码写的程序
编译器就会将我们编写的 .cs 源代码文件编译为 .exe 或者 .dll 等可执行程序
预处理器指令
预处理器指令 指导编译器 在实际编译开始之前对信息进行预处理
预处理器指令 都是以 # 开始,预处理器指令不是语句,所以他们不以分号 ; 结束
常用的折叠代码块 就是 预处理器指令
常见的预处理器指令
定义符号 #define
#define:定义一个符号,类似于一个没有值的变量,必须写在写在脚本文件的最前面,一般配合 #if 指令使用,或者配合特性
1 | // 定义符号 |
取消定义 #undef
取消 #define 定义的符号,让其失效,必须写在写在脚本文件的最前面,一般配合 #if 指令使用,或者配合特性
1 | // 定义符号 |
条件编译 #if
#if、#elif、#else、#endif,它们和 if 语句规则一样,一般配合 #define 定义的符号使用
它们用于告诉编译器进行编译代码的流程控制,如果发现有 #define 这个符号
那么其中的包含的代码 就会被编译器编译,可以通过 逻辑或 和 逻辑与 来进行多种符号的组合判断
条件编译的意义是,对于一些不同的运行平台,例如 IOS,Android 等,由于平台的限制,可能我们需要在不同的平台上执行不同的代码,
这时就需要借助平台编译符号,如 Android、IOS 等来判断,编译不同的代码,以确保不同平台编译的代码不同
有时不同版本的 Unity 编辑器也需要使用预定义好的符号,去判断当前的 Unity 编辑器版本应该编译执行什么样的代码
以下面的代码为例,如果发现 Unity5 这个符号被 #define 了,其中 #if 相关的代码就会被编译,运行程序被编译的代码才会得到执行
1 |
|
输出:
1 | Unity5相关代码被编译了 |
如果让不取消 Unity4 这个符号的定义:
1 |
|
输出:
1 | Unity4相关代码被编译了 |
警告或报错
-
#warning 会告诉编译器此处代码需要警告 #error 会告诉编译器此处代码有错误,需要报错,当此预处理器生效时编译不可通过
一般还是配合 #if 语句使用,用于提示当前编译条件下,编译出来的程序可能会出现问题
1 | class Program |
