介绍
什么是条件编译?
条件编译是指根据某些条件来决定特性代码是否被视为源代码的一部分。
可以使用属性 cfg 和 cfg_attr,还有内置 cfg 宏来有条件地编译源代码。这些条件基于:已编译的crate的目标体系结构,传递给编译器的任意值,以及其他一些杂项。
配置谓词
条件编译的每种形式都采用评估加过为 true 或 false 的配置谓词(configuration predicate)。谓词是以下之一:
- 配置选项。如果设置了该选项,则为true;如果未设置,则为false。
- all() 用逗号分隔的配置谓词列表。只要有一个谓词为false,则为false。如果没有谓词,那就是true。
- any() 用逗号分隔的配置谓词列表。如果至少一个谓词为true,则为true。如果没有谓词,则为false。
- not() 带有配置谓词。如果其谓词为false,则为true;如果其谓词为true,则为false。
配置选项
配置选项是已设置或未设置的 name 和 key-value 对。name 被写为单个标识符,例如 unix。key-value 对被写为标识符,=,然后是字符串。例如,target_arch = "x86_64" 是一个配置选项。
注意:等号周围的空格将被忽略。foo="bar&#