2013-05-04 30 views
12

Tôi có một số mã C++ và muốn thực hiện tác vụ nếu các macro __APPLE__ hoặc __linux được xác định.Làm cách nào để kiểm tra xem một trong nhiều macro có được xác định trong một #ifdef không?

Nếu tôi đã làm nó như là một bình thường if có điều kiện, nó sẽ dễ dàng sử dụng ||:

if (something || something) { .. code .. } 

Nhưng như những gì tôi biết không có || điều hành cho #ifdef báo cáo. Làm cách nào để kiểm tra xem __APPLE__ hoặc __linux được xác định bằng một tuyên bố đơn #ifdef?

+0

Vâng, nếu nghĩ "có sẵn trên OS X/iOS và Linux", bạn có muốn kiểm tra POSIX-availablity thay thế không? –

+0

@ H2CO3 ý tưởng hay. – beakr

Trả lời

22

Bạn không thể ở một đơn #ifdef sẽ thay thế một lần #if?

#if defined(__APPLE__) || defined(__linux) 

cũng này hoạt động nếu bạn thích

#if defined __APPLE__ || defined __linux 
3
#if defined(__APPLE__) || defined(__linux) 
2
#if defined __APPLE__ || defined __linux 
+0

Đừng quên #endif. – MrPickle5

2

Trong C++ của tôi có.

#if defined(__APPLE__) || defined(__linux) 
    // ... 
#endif 
Các vấn đề liên quan