我有一个很长的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";

我如何把它分成几行,让它更容易阅读? 如果我这样做:

const char *sql_query = "SELECT word_id
                        FROM table1, table2
                        WHERE table2.word_id = table1.word_id
                        ORDER BY table1.word ASC";

我得到一个错误。

是否有一种方法可以在多行中编写查询?


当前回答

你也可以进入XCode ->首选项,选择缩进选项卡,然后打开行换行。

这样,你就不需要输入任何额外的东西,它将适用于你已经写过的东西。: -)

但有一件事很烦人……

if (you're long on indentation
    && short on windows) {
            then your code will
                end up squished
                     against th
                         e side
                             li
                              k
                              e

                              t
                              h
                              i
                              s
}

其他回答

你也可以进入XCode ->首选项,选择缩进选项卡,然后打开行换行。

这样,你就不需要输入任何额外的东西,它将适用于你已经写过的东西。: -)

但有一件事很烦人……

if (you're long on indentation
    && short on windows) {
            then your code will
                end up squished
                     against th
                         e side
                             li
                              k
                              e

                              t
                              h
                              i
                              s
}

GCC将c++多行原始字符串文字作为C扩展添加

c++ 11有原始字符串字面量,如在https://stackoverflow.com/a/44337236/895245中提到的

然而,GCC也将它们添加为C扩展,你只需要使用-std=gnu99而不是-std=c99。例如:

c

#include <assert.h>
#include <string.h>

int main(void) {
    assert(strcmp(R"(
a
b
)", "\na\nb\n") == 0);
}

编译并运行:

gcc -o main -pedantic -std=gnu99 -Wall -Wextra main.c
./main

这可以用于例如插入多行内联汇编到C代码:如何在GCC c++中编写多行内联汇编代码?

现在您只需要放轻松,等待C20XY对其进行标准化。

c++多行字符串字面值

在Ubuntu 16.04, GCC 6.4.0, binutils 2.26.1上测试。

另一种方法是使用任何工具来删除换行符。写你的字符串使用任何文本编辑器,一旦你完成,粘贴你的文本在这里,并复制它再次在xcode。

我一直都有这个问题,所以我做了一个小工具,将文本转换为一个转义的多行Objective-C字符串:

http://multilineobjc.herokuapp.com/

希望这能为您节省一些时间。

在Objective-C中扩展引用思想:

#define NSStringMultiline(...) [[NSString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]

NSString *sql = NSStringMultiline(
    SELECT name, age
    FROM users
    WHERE loggedin = true
);