ios objective-c iphone c-preprocessor preprocessor-directive

ios - Directiva de preprocesador Objective-C para ''si no''



iphone c-preprocessor (3)

Entiendo cómo usar una directiva de preprocesador como esta:

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

Pero, ¿qué sucede si solo quiero hacer algo SI NO ES ALGUNA_VARIABLE?

Obviamente todavía podría hacer esto:

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

. . . dejando el si está vacío, pero ¿hay alguna manera de hacerlo?

#if not SOME_VARIABLE // Do something #endif

La documentación de Apple here sugiere que no, pero esto parece ser una necesidad muy básica.

Básicamente quiero hacer el preprocesador equivalente de:

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


¿Estás tratando de verificar si algo está definido o no? Si es así, puedes probar:

#ifndef SOME_VARIABLE

o

#if !defined(SOME_VARIABLE)


La documentación de Apple ( If - The C Preprocessor ) es correcta y esta es la forma en que las declaraciones del preprocesador C han sido desde el principio de los tiempos. De acuerdo con esa misma documentación, todo lo que puede hacer es elaborar una expresión que se evalúe como cero o un valor distinto de cero y usarla.

Las respuestas de Meccan son correctas ya que TARGET_IPHONE_SIMULATOR se define como TRUE o FALSE según la plataforma, por lo que la expresión evaluará cero o una cantidad distinta de cero.

En general, estas macros ( #if etc.) se usan para incluir o excluir cosas en función de si un símbolo está definido o no. Para ese caso de uso, el preprocesador tiene #ifdef y #ifndef que cubre lo que históricamente ha sido aceptado como los casos más importantes.

También dado que el tema de estas declaraciones solo pueden ser otros símbolos definidos por el preprocesador (a través de #define ), esta limitación es razonable.


tu podrías intentar:

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