1. ホーム
  2. c++

[解決済み] C++のマクロはどんなときに有益か?[クローズド]

2022-04-20 11:07:57

質問

C プリプロセッサは、C++のコミュニティでは当然のように恐れられ、敬遠されています。インライン関数、const、テンプレートは、通常 #define .

次のようなマクロです。

#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)  

は、タイプセーフに勝るとも劣らない。

inline bool succeeded(int hr) { return hr >= 0; }

しかし、マクロにも使い道があります。 できない プリプロセッサーがないとできないことです。

また、もしプリプロセッサを使わない方法を知っている場合は、その方法のコメント欄で教えてください。

解決方法は?

デバッグ関数のラッパーとして、自動的に __FILE__ , __LINE__ など。

#ifdef ( DEBUG )
#define M_DebugLog( msg )  std::cout << __FILE__ << ":" << __LINE__ << ": " << msg
#else
#define M_DebugLog( msg )
#endif