Header files and include best practice

后端 未结 2 1212
慢半拍i
慢半拍i 2021-01-18 14:28

I have a quick question regarding header files, include statements, and good coding style. Suppose I have 2 classes with associated source and header files, and then a fina

相关标签:
2条回答
  • 2021-01-18 15:12

    You should include all necessary files in every file that needs them. If MyProgram.cpp needs string, include it, instead of relying on it being included by Bar.hpp. There's no guarantee 2 weeks from now Bar.hpp will still include it, and then you'll be left with compiler errors.

    Note the necessary - i.e. make sure you actually need an include, when a forward declaration or even leaving it out completely will do.

    Also, note that some system headers might include others - apart from a few exceptions, there's no requirement. So if you need both <iostream> and <string> include both, even if you can compile only with one of them.

    The order in which the includes appear (system includes vs user includes) is up to the coding standard you follow - consistency is more important than the choice itself.

    0 讨论(0)
  • 2021-01-18 15:22

    Include all you need in every file, but do not include any file that you do not need. Normally, it is the job of the included file to make sure it is not included twice, using precompiler flags, etc...

    For example if is needed by Foo.cpp, but not by Foo.h, include it in Foo.cpp not in Foo.h. If required in both, include in both.

    Tangentially, as a best practice, never use using directives in a header file. If you need you can use using directives in implementation files (.cpp).

    0 讨论(0)
提交回复
热议问题