2012-03-13 21 views
185

Xin lỗi vì đã đặt câu hỏi rất cơ bản. Tôi muốn đặt điều kiện OR trong chỉ thị #ifdef.? Làm thế nào để làm điều đó? Tôi đã thửcách sử dụng #ifdef với điều kiện OR?

#ifdef LINUX | ANDROID 
... 
.. 
#endif 

Nó không hoạt động? Cách thích hợp là gì?

+7

Nếu bạn đang sử dụng '|' cho "hoặc" trong điều kiện C của bạn cũng vậy, bạn đang làm nó sai. –

Trả lời

418

Như thế này

#if defined(LINUX) || defined(ANDROID) 
-8

này làm việc cho #ifdef x || y. Vì vậy, nếu bạn muốn thiết lập FOO = 0x55 nếu x hoặc y được định nghĩa

#ifdef x 
    FOO=0x55; 
#else 
    #ifdef y 
     FOO=0x55; 
    #endif 
#endif 
+0

|| là OR bao gồm, nhưng mã được đăng là dành riêng cho OR. Vui lòng xem http://stackoverflow.com/questions/3246249/what-is-the-difference-between-inclusive-and-exclusive-or –

+1

@Charles Burns: Mã được đăng ở trên KHÔNG độc quyền HOẶC như bạn nói. Ngay cả khi cả hai macro x và y được xác định, thì mã vẫn sẽ đặt FOO = 0x55 ở một trong hai mã, do đó tạo hiệu ứng mong muốn. Nhận xét của bạn gây hiểu lầm và không chính xác. – goldenmean

Các vấn đề liên quan