libc库定义了许多常量,这些常量可以作为标志传递给open()
,例如O_APPEND
,O_CREAT
等。其中某些标志仅针对某些OS目标定义。如果有一种方法可以在我的代码中自由使用O_WHATEVER
而不用担心它实际上是否在libc中定义,那就太好了:
#[cfg(???)]
const O_WHATEVER = libc::O_WHATEVER;
#[cfg(not(???))]
const O_WHATEVER = 0;
如果上面的示例中的
???
是某种is_defined(libc::O_WHATEVER)
,那就太好了。否则,我需要弄清楚所有在libc中定义了O_WHATEVER
的操作系统组合,这确实是很痛苦的。
最佳答案
不支持Rust 1.41。 RFC 2523 — cfg_version
and cfg_accessible
引入了:
#[cfg(accessible(libc::O_WHATEVER))]
const O_WHATEVER = libc::O_WHATEVER;
关于rust - 有没有一种方法可以基于常量的存在进行条件编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60636940/