有没有一种方法可以根据常量的存在有条件地进行编译?
Is there a way to conditionally compile based on the existence of a constant?
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
的所有 OS 组合,这将是一个真正的痛苦。
不是 Rust 1.41。 RFC 2523 — cfg_version
and cfg_accessible
介绍:
#[cfg(accessible(libc::O_WHATEVER))]
const O_WHATEVER = libc::O_WHATEVER;
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
的所有 OS 组合,这将是一个真正的痛苦。
不是 Rust 1.41。 RFC 2523 — cfg_version
and cfg_accessible
介绍:
#[cfg(accessible(libc::O_WHATEVER))]
const O_WHATEVER = libc::O_WHATEVER;