1

次のようなプリプロセッサ コードを見たことがある場合がいくつかあります。

#ifndef TOKEN
#define TOKEN
#endif

私には、この状況では(それ自体以外のアイテム(まだ答えている人のためのガードを含む)をラップするときに使用することを認識しています)、定義する前に TOKEN がすでに定義されているかどうかを確認するのは冗長ですそれ。チェックなしで #define するだけの場合、結果は同じです。

これには共通の理由がありますか?コンパイル時間?将来の追加のためにブロックを予約しますか?

ありがとう。

4

4 に答える 4

0

あなたの正確な例は、複数の包含保護(ガードを含める)によく使用されます。大規模なコード ベースでは、複数の場所に含まれる h ファイルが存在する場合があり、この構造は再定義エラーを回避するために使用されます。最新のコンパイラでは、次のように置き換えることができます

#pragma once

ファイルの上部にあります。

于 2014-10-13T14:07:45.393 に答える