Я столкнулся с некоторым кодом obj-c, и мне интересно, есть ли способ его упростить:
#if ( A && !(B || C)) || ( B || C )
это то же самое, что и?
#if ( A || B || C )
Если нет, есть ли другой способ сформулировать его, что было бы легче читать?
[править] Я попробовал таблицу истинности, прежде чем задавать вопрос, но думал, что мне что-то не хватает, потому что я сомневался, что Foundation.framework/Foundation.h использует эту более сложную форму. Есть ли веская причина для этого?
Здесь исходный код (из Foundation.h):
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)