apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
170 stars 89 forks source link

#include style #742

Open PengZheng opened 7 months ago

PengZheng commented 7 months ago

I just came across LLVM's coding standard during my LLVM adventure, and found the paragraph about #include style inspiring:

We prefer these #includes to be listed in this

  1. Main Module
  2. Local/Private Headers
  3. LLVM project/subproject headers (clang/..., lldb/..., llvm/..., etc)
  4. System #includes

The Main Module Header file applies to .cpp files which implement an interface defined by a .h file. This #include should always be included first regardless of where it lives on the file system. By including a header file first in the .cpp files that implement the interfaces, we ensure that the header does not have any hidden dependencies which are not explicitly #included in the header, but should be. It is also a form of documentation in the .cpp file to indicate where the interfaces it implements are defined.

LLVM project and subproject headers should be grouped from most specific to least specific, for the same reasons described above.

For more, check this. How about adding it to our coding conventions and .clang-format?