libc库定义了许多常量,这些常量可以作为标志传递给open()
,如O_APPEND
、O_CREAT
等。其中一些标志仅为某些操作系统目标定义。如果有一种方法可以在我的代码中自由使用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
和cfg_accessible
引入:
#[cfg(accessible(libc::O_WHATEVER))]
const O_WHATEVER = libc::O_WHATEVER;