できるだけEnum,inline置換#define

842 ワード

この文は「前処理をコンパイラに置き換える」に変更できます.
まずマクロの使い方:
#define ASPECT_RATIO 1.653

マクロは一般的に大文字です.#defineではタイプセキュリティチェックは行われませんが、constではデータ型が点灯し、#defineではありません.だからconst定数で#defineを置き換えたほうがいいです.
const doule AspectRatio = 1.653  //      

次に、マクロ(macros)とは何かを言います.関数のように見えますが、関数呼び出しによる追加のオーバーヘッドは発生しません.
#define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))

すべての実パラメータは括弧で囲まれていますが、template inline関数に置き換えることができます.
template
inline void callWithMax(const T& a , const T& b){
    f(a > b  ? a : b);
}

const、enums、inlinesを使用すると、前処理のニーズを低減できますが、#includeや#ifdef#ifndefなど、できないものもあります.
まとめ:
  • 単純定数については、defines
  • をconstオブジェクトまたはenumsで置き換えることが望ましい.
  • 類似関数のマクロについては、defines
  • をinline関数に置き換えることが望ましい.