Ответ 1
вы можете попробовать:
#if !(SOME_VARIABLE)
// Do something
#endif
Я понимаю, как использовать директиву препроцессора следующим образом:
#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
}
вы можете попробовать:
#if !(SOME_VARIABLE)
// Do something
#endif
Вы пытаетесь проверить, определено ли что-то или нет? Если да, вы можете попробовать:
#ifndef SOME_VARIABLE
или
#if !defined(SOME_VARIABLE)
Документация Apple (If - препроцессор C) верна, и это так, что C-предпроцессорные утверждения были с начала рассвета времени. В соответствии с той же самой документацией все, что вы можете сделать, это создать выражение, которое оценивается как нулевое, так и ненулевое значение, и использовать это.
Ответы Meccan верны, поскольку TARGET_IPHONE_SIMULATOR
определяется как TRUE
или FALSE
в зависимости от платформы, поэтому выражение будет оцениваться как с нулевой, так и с ненулевой суммой.
В общем, эти макросы (#if
и т.д.) используются для включения или исключения вещей в зависимости от того, определен ли символ или нет. В этом случае препроцессор имеет #ifdef
и #ifndef
, который охватывает то, что исторически было принято в качестве наиболее важных случаев.
Также, учитывая, что предметом этих утверждений могут быть только другие определенные процессором определенные процессором (через #define
), это ограничение является разумным.