#define: syntaxe en objective C?
J'utilise des #define pour définir des formats de texte.
Problème, certains formats sont très longs: de 120 à 300 caractères. J'aimerais avoir ces formats écrits sur plusieurs lignes et je n'arrive pas à trouver la bonne syntaxe.
Si le # define définit plusieurs éléments, la syntaxe ci dessous marche bien car le \ est en fin de ligne entre deux éléments:
#define truc element1, element2,\
element3, element4, \
element5
Par contre, s'il s'agit de couper un très long string sur plusieurs lignes, ça ne marche pas. J'ai essayé:
milieu texte \
fin texte"
si j'enlève les back slash, ça ne marche pas non plus!
En C et Objective C, la syntaxe suivante est correcte:
NSSTring *truc = @debut texte \
milieu texte \
fin texte" ;
Y-a-t-il une solution pour les #define ?
Réponses
#define truc @debut texte \
"milieu texte" \
"fin texte"
Et la même syntaxe fonctionne aussi pour les strings C et les NSString.
T'as besoin d'un aussi gros #define ?
C'est pas plus intéressant de le mettre dans le NSLocalizedDescription (si tu utilises les localisations) ?
@jpimbert merci.
@Larme
Ce sont des réglages, ils ne sont pas localisés.
Les gros #define, oui (hélas). Je reconstruis un string qui constitue la configuration d'un programme. Ce n'est pas moi qui ai fait ce programme. Sa configuration est gardée sous forme d'un fichier ASCII de 182 lignes, divisées en 21 sections avec des noms de clef à rallonge.
Ces noms ont de 25 à 45 caractères, exp de clef: ConfigureParams.Joysticks.Joy.bEnableJumpOnFire2
Donc, soit je me farcis des écritures à n'en plus finir, soit j'utilise des macros et des formats!
Rectification: ce sont les noms des variables qui sont à rallonge. Les noms des clefs ne dépassent pas 20 caractères.
"debut texte"\
"milieu texte "\
"fin texte"
NSString* str=truc;
Et c'est donc parce que ces juxtapositions de chaà®nes sont interprétées comme une seule grosse chaà®ne à la compilation que les réponses de jpimbert et mpergant fonctionnent.