1. ホーム
  2. c++

[解決済み] 複数行のプリプロセッサー・マクロ

2023-02-07 04:54:23

質問

複数行のプリプロセッサマクロを作成する方法は?1行の作り方は知っています。

#define sqr(X) (X*X)

が、こんな感じで必要です。

#define someMacro(X)
    class X : public otherClass
    {
         int foo;
         void doFoo();
    };

どうすればうまくいくのでしょうか?

これはあくまで例であり、実際のマクロは非常に長くなる可能性があります。

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

あなたは \ を行継続エスケープ文字として使用します。

#define swap(a, b) {               \
                       (a) ^= (b); \
                       (b) ^= (a); \
                       (a) ^= (b); \
                   }

EDIT: @abelenkyさんがコメントで指摘されているように \ という文字が は行の最後の文字でなければなりません。 . もしそうでなければ(たとえその後に空白があったとしても)、それ以降の各行で紛らわしいエラーメッセージが表示されることになります。