У меня довольно длинный SQL-запрос:
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";
Как я могу разбить его на несколько строк, чтобы было легче читать? Если я сделаю следующее:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Я получаю ошибку.
Есть ли способ писать запросы в несколько строк?
c
objective-c
Илья Суздальницкий
источник
источник
@
?Есть хитрость, которую вы можете сделать с препроцессором.
У него есть потенциальные отрицательные стороны, что он разрушит пробелы, и это может ввести в заблуждение людей, читающих код.
Но есть и обратная сторона: вам не нужно экранировать кавычки внутри.
препроцессор превращает это в:
Я использовал этот трюк, когда писал некоторые модульные тесты, в которых были большие литеральные строки, содержащие JSON. Это означало, что мне не нужно было избегать каждого символа кавычки \ ".
источник
Вы также можете перейти в XCode -> «Настройки», выбрать вкладку «Отступы» и включить перенос строк.
Таким образом, вам не нужно будет ничего вводить, и это сработает для того, что вы уже написали. :-)
Одна неприятная вещь, хотя ...
источник
У меня постоянно возникает эта проблема, поэтому я создал крошечный инструмент для преобразования текста в экранированную многострочную строку Objective-C:
http://multilineobjc.herokuapp.com/
Надеюсь, это сэкономит вам время.
источник
Расширение ЦЕНЫ идеи для Objective-C:
источник
#define NSStringMultiline(...) @#__VA_ARGS__
должно работать тоже.#define NSStringMultiline(...) [[NSMutableString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]
#define NSStringMultiline(...) [@#__VA_ARGS__ mutableCopy]
также работает для изменяемых строк.Еще одно решение для кучи, измените ваш файл .m на .mm, чтобы он стал Objective-C ++, и использовали литералы C ++, например:
Необработанные литералы игнорируют все до последовательности завершения, которая в случае по умолчанию является кавычкой.
Если последовательность скобок-кавычек должна где-то появиться в строке, вы также можете легко указать собственный разделитель, например так:
источник
Вы также можете сделать:
источник
GCC добавляет C ++ многострочные необработанные строковые литералы в качестве расширения C
В C ++ 11 есть необработанные строковые литералы, как указано на: https://stackoverflow.com/a/44337236/895245
Тем не менее, GCC также добавляет их как расширение C, вы просто должны использовать
-std=gnu99
вместо-std=c99
. Например:main.c
Скомпилируйте и запустите:
Это может быть использовано, например, для вставки многострочной встроенной сборки в код C: Как написать код многострочной встроенной сборки в GCC C ++?
Теперь нужно просто откинуться на спинку кресла и ждать, пока он будет стандартизирован на C20XY.
C ++ спросили по адресу: C ++ многострочный строковый литерал
Протестировано на Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1.
источник
Альтернативой является использование любого инструмента для удаления разрывов строк. Напишите вашу строку с помощью любого текстового редактора, как только вы закончите, вставьте свой текст сюда и скопируйте его снова в xcode.
источник