If I have ,let's say, a header file that contains <iostream>
in it ,my main.cpp also contains <iostream>
, this repetition could bring problems? If yes , how can I avoid this?

- 71
- 8
-
5No, there aren't any problems due to correct [header guards](https://stackoverflow.com/questions/4767068/header-guards-in-c-and-c). If you have a concrete case, where you're facing problems give us a [mcve] please. – πάντα ῥεῖ Dec 07 '20 at 21:43
1 Answers
No, there are no problems here.
[using.headers/2]
: A translation unit may include library headers in any order ([lex.separate]). Each may be included more than once, with no effect different from being included exactly once, except that the effect of including either<cassert>
or<assert.h>
depends each time on the lexically current definition ofNDEBUG
.174 A translation unit may include library headers in any order ([lex.separate]). Each may be included more than once, with no effect different from being included exactly once, except that the effect of including either<cassert>
or<assert.h>
depends each time on the lexically current definition ofNDEBUG
.174
Typically this is achieved using header guards, or a #pragma once
.
I'm ignoring the caveat about NDEBUG
, because you should not be setting or unsetting that using #define
or #undef
, but instead setting it (or not setting it) en masse across your build.

- 17,071
- 2
- 21
- 35