1. ホーム
  2. c

[解決済み] C / Objective-Cで文字列リテラルを複数行にまたがるように分割するには?

2022-03-16 13:48:25

質問

かなり長い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";

エラーが発生するのですが。

クエリを複数行で記述する方法はありますか?

どのように解決するのですか?

文字列を複数行に渡って分割する方法は2つあります。

  1. 各文字列を1行に 文字列でのみ動作します。

    • プレーンなC言語。

      char *my_string = "Line 1 "
                        "Line 2";
      
      
    • Objective-Cです。

      NSString *my_string = @"Line1 "
                             "Line2";    // the second @ is optional
      
      
  2. 使用方法 \ - はどんな式にも使えます。

    • プレーンC。

      char *my_string = "Line 1 \
                         Line 2";
      
      
    • Objective-Cです。

      NSString *my_string = @"Line1 \
                              Line2";
      
      

最初の方法は、含まれる空白が多くないので、より良い方法です。しかし、SQLクエリの場合は、どちらも可能です。

#define を追加する必要があります。 \ という2つの文字列を連結しています。

プレーンCです。

#define kMyString "Line 1"\
                  "Line 2"