web-dev-qa-db-fra.com

Directive du préprocesseur Objective-C pour «sinon»

Je comprends comment utiliser une directive de préprocesseur comme celle-ci:

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

Mais que faire si je veux seulement faire quelque chose SI PAS QUELQUES_VARIABLES.

Évidemment, je pouvais toujours faire ça:

#if SOME_VARIABLE

#else
    // Do something else
#endif

. . . laissant le vide, mais y a-t-il un moyen de faire:

#if not SOME_VARIABLE
   // Do something
#endif

La documentation Apple ici ne le suggère pas, mais cela semble être un besoin très basique.

Fondamentalement, je veux faire l'équivalent du préprocesseur:

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

tu pourrais essayer:

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

Essayez-vous de vérifier si quelque chose est défini ou non? Si oui, vous pouvez essayer:

#ifndef SOME_VARIABLE

ou

#if !defined(SOME_VARIABLE)

20
xuzhe

La Apple ( If - Le préprocesseur C ) est correcte et c'est ainsi que les instructions du préprocesseur C ont été depuis la nuit des temps. même documentation, tout ce que vous pouvez faire est de créer une expression qui évalue à zéro ou à une valeur non nulle et l'utiliser.

Les réponses de Meccan sont correctes comme TARGET_IPHONE_SIMULATOR est défini comme TRUE ou FALSE selon la plateforme, donc l'expression sera évaluée à zéro ou à un montant différent de zéro.

En général, ces macros (#if etc) sont utilisés pour inclure ou exclure des éléments selon qu'un symbole est défini ou non. Pour ce cas d'utilisation, le préprocesseur a #ifdef et #ifndef qui couvre ce qui a été historiquement accepté comme les cas les plus importants.

Étant donné également que le sujet de ces instructions ne peut être que d'autres symboles définis par le pré-processeur (via #define) alors cette limitation est raisonnable.

4
Peter M