3

いくつかの異なるスタイルのマクロを見つけました。
ヘッダー ファイルの場合は、次のようになります。

#define __HEADER_H__
#define _HEADER_H_
#define _header_h

簡単なマクロ:

#define SOMEMACRO something
#define somemacro something
#define SOME_MACRO something

引数付きマクロ:

#define func_macro() something() // arguments not used?
#define FUNC_MACRO something()
#define func_macro something()

だから私の質問は: それらのいくつかはスタイルが良いか悪いですか? マクロ名の「デフォルト」スタイルはありますか?

4

2 に答える 2

3

すべての大文字を使用することは、間違いなく定数の方法です。ただし、関数マクロは使用しないことをお勧めします。インライン関数を書くことをお勧めします。特定の状況で関数マクロを使用すると、論理エラーが発生する可能性があります。例えば:

#define FUNC(x) x + x

int main() {
    int a = 1;
    b = FUNC(a++);
}

結果は未定義であり、意図したものではない可能性が高いです。

于 2012-07-24T21:12:13.450 に答える
2

Indian Hill Cスタイルガイドによると、UofT、UW、およびその他の場所で修正されています

11.命名規則(13ページ):

#define定数はすべてCAPSに含める必要があります。

..。

多くのマクロ「関数」はすべてCAPSにあります。一部のマクロ(getcharやputcharなど)は、関数としても存在する可能性があるため、小文字になっています。小文字のマクロ名は、マクロが関数呼び出しのように動作する場合、つまり、パラメーターを1回だけ評価し、名前付きパラメーターに値を割り当てない場合にのみ受け入れられます。引数が1回だけ評価されても、関数のように動作するマクロを作成できない場合があります。

PDFドキュメントの14ページの第12章(定数)と第13章(マクロ)もお読みください。


それらの命名規則は私見ですが非常に合理的です。

于 2012-07-26T19:17:03.293 に答える