代码之家  ›  专栏  ›  技术社区  ›  Christian Ammer

头文件中的函数定义,因为函数来自不同的项目

c++
  •  0
  • Christian Ammer  · 技术社区  · 14 年前

    在一个headerfile中给出一个小函数的定义是合适的吗?这个小函数由两个项目使用,最多有10行代码。

    这是因为我可以将headerfile放在include目录中,这两个项目共享该目录。否则,我必须在每个项目源目录中维护相同的cpp文件。

    这种情况的常见方式是什么?

    谢谢你的回答。

    4 回复  |  直到 14 年前
        1
  •  3
  •   anon    14 年前

    可以将其放在头中,但需要将其定义为内联:

    inline void f() {
        // stuff
    }
    

    如果标题包含在 相同的 项目。注意,这并不意味着编译器必须在调用站点内联函数代码。

    或者,您可以在一个无名称的名称空间中定义它,这将使它成为您包含它的翻译单元的本地名称空间:

    namespace {
        void f() {
            // stuff
        }
    }
    
        2
  •  1
  •   graham.reeds    14 年前

    我的一个一般规则是只在头中放置getter/setter。

    任何比几行更复杂的代码都应该放在源文件(.cpp)中。

        3
  •  1
  •   Naveen    14 年前

    这是一个非C++解决方案。如果您使用的源代码管理支持软链接,那么您可以在一个项目目录中创建源文件,并在其他项目中创建软链接。因此,在原始源文件中修改的任何代码都会自动反映在其他项目上。

        4
  •  0
  •   liaK    14 年前

    你为什么不能 单独定义相同的函数 在每个项目中?或 包含cpp文件有什么问题?

    也许你会说, 它可能在平均时间内发生变化,我需要更新 “。

    但是,假设您在头文件中添加了更多的函数,之后您将在头文件中完成整个实现。

    您也可以包含源文件,或者在另一个项目中单独定义10行。

    如果你想要的话( 请求 )你的职能是 inline 第一,在头文件中声明它。或者如果你用的话 templates 所有定义都将在头文件中。

    但在您的例子中,我更喜欢包含cpp,或者单独定义函数。