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 |