C/C++を扱ってくれた人の多くは、プリプロセッサの動作の仕組みが多少異なると思います。私は今日までそう思っていたが、私の直感は間違っていた。話はここにあります:(奇妙な?)GCCプリプロセッサの振る舞い
今日私は何かを試みましたが、結果を説明することはできません。何が起こる
#define A B
#define B A
A
B
: 最初に以下のコードを考えてみ?まあ、-Eフラグとそれをコンパイルした後の結果はこれです:
まあA
B
、[OK]を、多分誰もが期待していないものを、それが説明可能です。私はプリプロセッサが何らかの問題があると考えて、何もしなかったと思います。 、私のために、説明のつかない結果を今すぐ
#define A B
#define B A C
#define C x
A
B
:
A x
B x
はどのようにこれが起こった私が試した
次のことは、このでしたか?私はこれがどうして起こったのか合理的な方法を理解することはできません。最初のコマンド(#define A B)は実行できません。なぜなら、AはBに置き換えられ、最終結果は両方で同じになるからです。しかし、そうでなければ、 "A x"が起こる方法はありません!
私の質問:何が欠けていますか?明らかに、私はプリプロセッサの仕組みの正確な方法を知らない。あなたはそれについての情報源を知っていますか?
との#defineを回避する必要が理由です... – Goz
うん、これは私がすべてでそれらを使用しないことを意味するものではありませ...もう一つの理由です。いくつかのタスクでは、非常に便利です(i.m.oに行く方法)。 – George