2

私は次のようなものを定義できることを知っています

#define LESS(x, y) if(x < y)

だから私はif、C ++でPythonのようなテンプレートになるように定義できるのだろうか? そのような

if x < y: do somethingそれ以外のif(x < y) do something

4

1 に答える 1

1

手短に言えば -いいえ

cplusplus.comから:

プリプロセッサは、このディレクティブに遭遇すると、コードの残りの部分に出現するすべての識別子を置換で置き換えます。この置換は、式、ステートメント、ブロック、または単に何でもかまいません。プリプロセッサは C++ を理解せず、単に識別子の出現箇所を置換で置き換えます。

あなたが欲しいのはこのようなものです

#define if(x):(y) if(x){##y##};

それにもかかわらず、コロンはキーワードであり、識別子には使用できないため、マクロ定義が壊れます。それを逃れる方法はありません。

于 2013-04-18T10:31:22.557 に答える