Eu tenho uma consulta sqlite bastante longa:
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";
Como posso quebrá-lo em várias linhas para facilitar a leitura? Se eu fizer o seguinte:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Estou recebendo um erro.
Existe uma maneira de escrever consultas em várias linhas?
c
objective-c
Ilya Suzdalnitski
fonte
fonte
@
?Há um truque que você pode fazer com o pré-processador.
Ele tem o potencial de reduzir o espaço em branco e pode ser confuso para as pessoas que leem o código.
Mas, tem o lado positivo de que você não precisa escapar de caracteres de aspas dentro dele.
o pré-processador transforma isso em:
Eu usei esse truque quando estava escrevendo alguns testes de unidade que tinham grandes seqüências literais contendo JSON. Isso significava que eu não precisava escapar de todos os caracteres de citação ".
fonte
Você também pode acessar XCode -> Preferences, selecionar a guia Indentation e ativar a quebra automática de linha.
Dessa forma, você não precisará digitar nada extra e isso funcionará para as coisas que você já escreveu. :-)
Uma coisa irritante é ...
fonte
Como estou com esse problema o tempo todo, criei uma pequena ferramenta para converter texto em uma string Objective-C de várias linhas de escape:
http://multilineobjc.herokuapp.com/
Espero que isso poupe algum tempo.
fonte
Estendendo a ideia de cotação para o Objective-C:
fonte
#define NSStringMultiline(...) @#__VA_ARGS__
deve funcionar também.#define NSStringMultiline(...) [[NSMutableString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]
#define NSStringMultiline(...) [@#__VA_ARGS__ mutableCopy]
também funciona para strings mutáveis.Mais uma solução para a pilha, altere seu arquivo .m para .mm para que ele se torne Objective-C ++ e use literais brutos em C ++, assim:
Literais brutos ignoram tudo até a sequência de finalização, que no caso padrão é aspas entre parênteses.
Se a sequência de aspas entre parênteses precisar aparecer na sequência em algum lugar, você também poderá especificar facilmente um delimitador personalizado, como este:
fonte
Você também pode fazer:
fonte
O GCC adiciona literais de cadeia bruta multilinha em C ++ como uma extensão C
O C ++ 11 possui literais de cadeia bruta, conforme mencionado em: https://stackoverflow.com/a/44337236/895245
No entanto, o GCC também os adiciona como uma extensão C, basta usar em
-std=gnu99
vez de-std=c99
. Por exemplo:main.c
Compile e execute:
Isso pode ser usado, por exemplo, para inserir montagem em linha multilinha no código C: Como escrever código de montagem em linha multilinha no GCC C ++?
Agora basta recostar-se e aguardar que seja padronizado no C20XY.
O C ++ foi solicitado em: literal de cadeia de linhas multilinha do C ++
Testado no Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1.
fonte
Uma alternativa é usar qualquer ferramenta para remover quebras de linha. Escreva sua string usando qualquer editor de texto, depois de terminar, cole o texto aqui e copie-o novamente no xcode.
fonte