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