头文件的C++样式

syn*_*tik 1 c++ coding-style header header-files

假设我有以下文件:

  1. main.cpp中
  2. routine.cpp
  3. routine.h

进一步假设main.cpp调用routine()在routine.cpp中定义的函数,但routine.cpp也包含routine()函数使用的函数.换句话说,routine.cpp包含仅从routine.cpp中调用的函数和从其他源文件调用的函数.

显然main.cpp将包含#include "routine.h".但是,routine.h是否包含在routine.cpp(样式A)中定义的所有函数的原型,或者routine.h是否包含从其他源文件(样式B)调用的函数的原型?

我总是在风格A之后编写代码,但最近我想知道风格B是否更具风格.(如果使用样式B,那么仅在routine.cpp中使用的函数的原型可以位于routine.cpp的顶部,或者定义可以简单地在它们的使用之前.)

Luc*_*ore 7

通常,标头只包含公共接口的方法(如果它们是自由函数).您可以声明routine.cpp匿名命名空间中使用的辅助方法.

//routine.h

void foo();
void goo();

//routine.cpp

namespace
{
   void fooHelper() {}
   void gooHelper() {}
}

void foo()
{
   fooHelper();
}
void goo()
{
   gooHelper();
}
Run Code Online (Sandbox Code Playgroud)

之前声明了这些函数static,这给了它们内部的联系,但现在的一般风格是使用匿名命名空间.