J'ai une assez longue requête sqlite:
const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC";
Comment le diviser en plusieurs lignes pour en faciliter la lecture? Si je fais ce qui suit:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Je reçois une erreur.
Existe-t-il un moyen d'écrire des requêtes sur plusieurs lignes?
c
objective-c
Ilya Suzdalnitski
la source
la source
@
?Il y a une astuce que vous pouvez faire avec le pré-processeur.
Il présente les inconvénients potentiels de l'effondrement de l'espace blanc et pourrait être déroutant pour les personnes lisant le code.
Mais, il a l'avantage que vous n'avez pas besoin d'échapper aux guillemets à l'intérieur.
le préprocesseur transforme cela en:
J'ai utilisé cette astuce lorsque j'écrivais des tests unitaires contenant de grandes chaînes littérales contenant JSON. Cela signifiait que je n'avais pas à échapper à chaque caractère de citation \ ".
la source
Vous pouvez également aller dans XCode -> Préférences, sélectionner l'onglet Retrait et activer le retour à la ligne.
De cette façon, vous n'aurez rien à taper de plus, et cela fonctionnera pour les choses que vous avez déjà écrites. :-)
Une chose ennuyeuse est cependant ...
la source
J'ai ce problème tout le temps, j'ai donc créé un petit outil pour convertir le texte en une chaîne Objective-C multi-lignes échappée:
http://multilineobjc.herokuapp.com/
J'espère que cela vous fera gagner du temps.
la source
Extension de l' idée de devis pour Objective-C:
la source
#define NSStringMultiline(...) @#__VA_ARGS__
devrait aussi fonctionner.#define NSStringMultiline(...) [[NSMutableString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]
#define NSStringMultiline(...) [@#__VA_ARGS__ mutableCopy]
fonctionne également pour les chaînes mutables.Une autre solution pour la pile, changez votre fichier .m en .mm pour qu'il devienne Objective-C ++ et utilisez des littéraux bruts C ++, comme ceci:
Les littéraux bruts ignorent tout jusqu'à la séquence de terminaison, qui dans le cas par défaut est la citation entre parenthèses.
Si la séquence entre guillemets parenthèses doit apparaître quelque part dans la chaîne, vous pouvez également spécifier facilement un délimiteur personnalisé, comme ceci:
la source
Vous pouvez également faire:
la source
GCC ajoute des littéraux de chaîne brute multilignes C ++ en tant qu'extension C
C ++ 11 a des littéraux de chaîne bruts comme mentionné sur: https://stackoverflow.com/a/44337236/895245
Cependant, GCC les ajoute également en tant qu'extension C, il vous suffit de les utiliser à la
-std=gnu99
place de-std=c99
. Par exemple:principal c
Compiler et exécuter:
Cela peut être utilisé par exemple pour insérer un assemblage en ligne multiligne dans du code C: Comment écrire du code d'assemblage en ligne multiligne dans GCC C ++?
Il ne vous reste plus qu'à vous détendre et à attendre qu'il soit normalisé sur C20XY.
C ++ a été demandé à: C ++ multiline string literal
Testé sur Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1.
la source
Une alternative consiste à utiliser n'importe quel outil pour supprimer les sauts de ligne. Écrivez votre chaîne en utilisant n'importe quel éditeur de texte, une fois que vous avez terminé, collez votre texte ici et copiez-le à nouveau dans xcode.
la source