Подтвердить что ты не робот

Objective-C директива препроцессора для 'if not'

Я понимаю, как использовать директиву препроцессора следующим образом:

#if SOME_VARIABLE
    // Do something
#else
    // Do something else
#endif

Но что, если я только хочу сделать что-то, ЕСЛИ НЕ НЕКОТОРЫЕ_ВАРИЙНЫЕ.

Очевидно, я все еще мог это сделать:

#if SOME_VARIABLE

#else
    // Do something else
#endif

., оставляя пустое, Но есть ли способ сделать:

#if not SOME_VARIABLE
   // Do something
#endif

Документация Apple здесь предполагает, что нет, но это кажется очень простой потребностью.

В принципе, я хочу сделать препроцессорный эквивалент:

if(!SOME_VARIABLE)(
{
   // Do Something
}
4b9b3361

Ответ 1

вы можете попробовать:

#if !(SOME_VARIABLE)
   // Do something
#endif

Ответ 2

Вы пытаетесь проверить, определено ли что-то или нет? Если да, вы можете попробовать:

#ifndef SOME_VARIABLE

или

#if !defined(SOME_VARIABLE)

Ответ 3

Документация Apple (If - препроцессор C) верна, и это так, что C-предпроцессорные утверждения были с начала рассвета времени. В соответствии с той же самой документацией все, что вы можете сделать, это создать выражение, которое оценивается как нулевое, так и ненулевое значение, и использовать это.

Ответы Meccan верны, поскольку TARGET_IPHONE_SIMULATOR определяется как TRUE или FALSE в зависимости от платформы, поэтому выражение будет оцениваться как с нулевой, так и с ненулевой суммой.

В общем, эти макросы (#if и т.д.) используются для включения или исключения вещей в зависимости от того, определен ли символ или нет. В этом случае препроцессор имеет #ifdef и #ifndef, который охватывает то, что исторически было принято в качестве наиболее важных случаев.

Также, учитывая, что предметом этих утверждений могут быть только другие определенные процессором определенные процессором (через #define), это ограничение является разумным.