有没有一种方法可以根据常量的存在进行有条件的编译



libc库定义了许多常量,这些常量可以作为标志传递给open(),如O_APPENDO_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_versioncfg_accessible引入:

#[cfg(accessible(libc::O_WHATEVER))]
const O_WHATEVER = libc::O_WHATEVER;

最新更新