Saya memiliki permintaan sqlite yang cukup panjang:
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";
Bagaimana saya bisa memecahnya dalam beberapa baris untuk membuatnya lebih mudah dibaca? Jika saya melakukan hal berikut:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Saya mendapatkan kesalahan.
Apakah ada cara untuk menulis kueri dalam beberapa baris?
c
objective-c
Ilya Suzdalnitski
sumber
sumber
@
?Ada trik yang bisa Anda lakukan dengan pre-processor.
Ini memiliki potensi sisi bawah bahwa itu akan runtuh ruang putih, dan bisa membingungkan bagi orang yang membaca kode.
Tapi, ada sisi baiknya sehingga Anda tidak perlu melarikan diri dari karakter kutipan di dalamnya.
preprocessor mengubahnya menjadi:
Saya telah menggunakan trik ini ketika saya sedang menulis beberapa unit test yang memiliki string literal besar yang berisi JSON. Itu berarti bahwa saya tidak harus melarikan diri dari setiap karakter kutipan \ ".
sumber
Anda juga bisa masuk ke XCode -> Preferences, pilih tab Indentation, dan aktifkan Line Wrapping.
Dengan begitu, Anda tidak perlu mengetikkan sesuatu yang ekstra, dan itu akan berfungsi untuk hal-hal yang sudah Anda tulis. :-)
Satu hal yang mengganggu adalah ...
sumber
Saya mengalami masalah ini sepanjang waktu, jadi saya membuat alat kecil untuk mengonversi teks menjadi string Objective-C multi-line yang lolos:
http://multilineobjc.herokuapp.com/
Semoga ini menghemat waktu Anda.
sumber
Memperluas ide Penawaran untuk Objective-C:
sumber
#define NSStringMultiline(...) @#__VA_ARGS__
harus bekerja juga.#define NSStringMultiline(...) [[NSMutableString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]
#define NSStringMultiline(...) [@#__VA_ARGS__ mutableCopy]
juga berfungsi untuk string yang bisa berubah.Satu lagi solusi untuk tumpukan, ubah file .m Anda menjadi .mm sehingga menjadi Objective-C ++ dan gunakan C ++ raw literals, seperti ini:
Literal mentah mengabaikan semuanya sampai urutan terminasi, yang dalam kasus default adalah kurung-kutipan.
Jika urutan kurung-kutipan harus muncul di string di suatu tempat, Anda juga dapat dengan mudah menentukan pemisah khusus, seperti ini:
sumber
Anda juga dapat melakukan:
sumber
GCC menambahkan C ++ multiline string string literal sebagai ekstensi C.
C ++ 11 memiliki literal string mentah seperti yang disebutkan di: https://stackoverflow.com/a/44337236/895245
Namun, GCC juga menambahkan mereka sebagai ekstensi C, Anda hanya perlu menggunakan
-std=gnu99
bukan-std=c99
. Misalnya:main.c
Kompilasi dan jalankan:
Ini dapat digunakan misalnya untuk memasukkan rakitan inline multiline ke dalam kode C: Bagaimana cara menulis kode rakitan inline multiline di GCC C ++?
Sekarang Anda hanya perlu berbaring, dan tunggu sampai standar di C20XY.
C ++ diminta di: C ++ string multiline literal
Diuji pada Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1.
sumber
Alternatifnya adalah dengan menggunakan alat apa pun untuk menghapus jeda baris. Tulis string Anda menggunakan editor teks apa pun, setelah selesai, tempel teks Anda di sini dan salin lagi dalam xcode.
sumber