Tengo una consulta sqlite bastante larga:
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";
¿Cómo puedo dividirlo en varias líneas para que sea más fácil de leer? Si hago lo siguiente:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Estoy recibiendo un error
¿Hay alguna manera de escribir consultas en varias líneas?
c
objective-c
Ilya Suzdalnitski
fuente
fuente
@
?Hay un truco que puedes hacer con el preprocesador.
Tiene el potencial negativo de colapsar los espacios en blanco, y podría ser confuso para las personas que leen el código.
Pero tiene el lado positivo de que no necesita escapar de los caracteres de comillas dentro de él.
el preprocesador convierte esto en:
He usado este truco cuando estaba escribiendo algunas pruebas unitarias que tenían grandes cadenas literales que contenían JSON. Significaba que no tenía que escapar de todos los caracteres de comillas ".
fuente
También puede ir a XCode -> Preferencias, seleccionar la pestaña Sangría y activar Ajuste de línea.
De esa manera, no tendrá que escribir nada extra, y funcionará para las cosas que ya escribió. :-)
Sin embargo, una cosa molesta es ...
fuente
Tengo este problema todo el tiempo, así que creé una pequeña herramienta para convertir texto en una cadena de Objective-C de varias líneas con escape:
http://multilineobjc.herokuapp.com/
Espero que esto te ahorre algo de tiempo.
fuente
Extender la idea de Cita para Objective-C:
fuente
#define NSStringMultiline(...) @#__VA_ARGS__
debería funcionar también.#define NSStringMultiline(...) [[NSMutableString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]
#define NSStringMultiline(...) [@#__VA_ARGS__ mutableCopy]
también funciona para cadenas mutables.Una solución más para la pila, cambie su archivo .m a .mm para que se convierta en Objective-C ++ y use literales en bruto C ++, como este:
Los literales sin procesar ignoran todo hasta la secuencia de terminación, que en el caso predeterminado es paréntesis-cita.
Si la secuencia entre comillas y paréntesis tiene que aparecer en algún lugar de la cadena, también puede especificar fácilmente un delimitador personalizado, como este:
fuente
También puedes hacer:
fuente
GCC agrega literales de cadena cruda multilínea C ++ como una extensión C
C ++ 11 tiene literales de cadena sin procesar como se menciona en: https://stackoverflow.com/a/44337236/895245
Sin embargo, GCC también los agrega como una extensión C, solo tiene que usarlos en
-std=gnu99
lugar de-std=c99
. P.ej:C Principal
Compilar y ejecutar:
Esto se puede usar, por ejemplo, para insertar un ensamblaje en línea multilínea en el código C: ¿Cómo escribir un código de ensamblaje en línea multilínea en GCC C ++?
Ahora solo tiene que recostarse y esperar a que se estandarice en C20XY.
Se le preguntó a C ++ en: literal de cadena multilínea C ++
Probado en Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1.
fuente
Una alternativa es utilizar cualquier herramienta para eliminar saltos de línea. Escriba su cadena usando cualquier editor de texto, una vez que haya terminado, pegue su texto aquí y cópielo nuevamente en xcode.
fuente