私は次のようなものを定義できることを知っています
#define LESS(x, y) if(x < y)
だから私はif
、C ++でPythonのようなテンプレートになるように定義できるのだろうか? そのような
if x < y: do something
それ以外のif(x < y) do something
私は次のようなものを定義できることを知っています
#define LESS(x, y) if(x < y)
だから私はif
、C ++でPythonのようなテンプレートになるように定義できるのだろうか? そのような
if x < y: do something
それ以外のif(x < y) do something
手短に言えば -いいえ。
プリプロセッサは、このディレクティブに遭遇すると、コードの残りの部分に出現するすべての識別子を置換で置き換えます。この置換は、式、ステートメント、ブロック、または単に何でもかまいません。プリプロセッサは C++ を理解せず、単に識別子の出現箇所を置換で置き換えます。
あなたが欲しいのはこのようなものです
#define if(x):(y) if(x){##y##};
それにもかかわらず、コロンはキーワードであり、識別子には使用できないため、マクロ定義が壊れます。それを逃れる方法はありません。