6

I hope this hasn't been asked before on this site. I wasn't able to find a solid answer from google.

What happens when you #include iostream in multiple files of a project? I always use #ifndef and #define in my header files. Does that prevent iostream from being included more than once?

4

4 に答える 4

3

クリスとハローガンが言ったように、はい、彼らはそれを防ぎます. #ifndef と #define はプリプロセッサ命令であり、英語で

#ifndef (未定義の場合)

#define (定義)

したがって、ヘッダーを作成して #include "myheader.h" を 2 回実行すると、if ステートメントで囲んでいるため、ファイルが再度含まれることはありません。まだ含まれていません(定義されていません)。

于 2013-04-14T01:31:49.623 に答える
0
#ifndef __IOSTREAM_H
#include <iostream>
#endif

...

ほとんどの標準ヘッダーには、上記のようなインクルード ガードがあるようです。

または、必要なマクロを定義して、独自のインクルード ガードを作成することもできます。

于 2015-10-25T09:47:39.117 に答える
0

関係なく。を使用しても、複数回含めようとしますifndef。複数のファイルが一度に含まれるためです。すべて含めようとします<iostream>が、開く<iostream>

#pragma once

これは基本的に、一度だけ含まれることを意味します。業界で見つけた複数のインクルードを避けるための推奨される方法ではありません。再び含まれないことを知るのが難しいからです。上部と下部にある ifndef と比較してください。

于 2013-04-14T01:29:35.543 に答える