Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

cfg

설정 조건 검사는 두 가지 다른 연산자를 통해 가능합니다:

  • cfg 속성: 속성 위치에서의 #[cfg(...)]
  • cfg! 매크로: 불리언 표현식에서의 cfg!(...)

전자는 조건부 컴파일을 가능하게 하는 반면, 후자는 조건부로 true 또는 false 리터럴로 평가되어 런타임에 검사를 가능하게 합니다. 둘 다 동일한 인자 문법을 사용합니다.

cfg!#[cfg]와 달리 코드를 제거하지 않으며 오직 참 또는 거짓으로만 평가됩니다. 예를 들어 cfg!가 조건으로 사용될 때, cfg!가 무엇으로 평가되든 상관없이 if/else 표현식의 모든 블록은 유효해야 합니다.

// 이 함수는 대상 OS가 리눅스인 경우에만 컴파일됩니다
#[cfg(target_os = "linux")]
fn are_you_on_linux() {
    println!("당신은 리눅스를 사용하고 있습니다!");
}

// 그리고 이 함수는 타겟 OS가 리눅스가 *아닌* 경우에만 컴파일됩니다.
#[cfg(not(target_os = "linux"))]
fn are_you_on_linux() {
    println!("당신은 리눅스를 사용하고 있지 *않습니다*!");
}

fn main() {
    are_you_on_linux();

    println!("확실한가요?");
    if cfg!(target_os = "linux") {
        println!("네. 확실히 리눅스입니다!");
    } else {
        println!("네. 확실히 리눅스가 *아닙니다*!");
    }
}

참고:

참조, cfg!, 그리고 매크로.