gpt4 book ai didi

头文件的 C++ 风格

转载 作者:行者123 更新时间:2023-11-30 00:38:39 26 4
gpt4 key购买 nike

假设我有以下文件:

  1. main.cpp
  2. 例程.cpp
  3. 例程.h

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

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

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

最佳答案

通常, header 仅包含公共(public)接口(interface)的方法(如果那些是自由函数)。您可以在匿名命名空间中声明 routine.cpp 中使用的辅助方法。

//routine.h

void foo();
void goo();

//routine.cpp

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

void foo()
{
fooHelper();
}
void goo()
{
gooHelper();
}

这些函数以前被声明为static,这给了它们内部链接,但现在的一般风格是使用匿名命名空间。

关于头文件的 C++ 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com