如何在API中设置私有功能?

时间:2019-06-06 20:07:18

标签: c++ api

我目前在API中具有以下头文件:

// my_library.h
namespace MyLibrary
{
    // Private functions
    long bar(long id);
    unsigned long foo(long id);

    // Public functions
    void do_public_thing(long id);
}

此头文件在my_library.cpp文件中具有每个功能的实现。我的问题是我想将barfoo设为私有函数,但是它们的实现仍在单独的.cpp文件中,所以我不能使用空白的命名空间(至少我不要这样)。我该怎么办?

1 个答案:

答案 0 :(得分:3)

我看不出有什么理由应该在标有API公共部分的标头中公开名称空间API私有函数。

您可能想要的是

// my_library.h
namespace MyLibrary {
    // Public functions
    void do_public_thing(long id);
}

// my_library.cpp
#include library.h

namespace {
    // Private functions
    long bar(long id) {
        // Implementation
    }
    unsigned long foo(long id) {
        // Implementation
    }
}

void MyLibrary::do_public_thing(long id) {
    // Implementation
    long bar_result = bar(id);
    unsingned long foo_result = foo(id);
}

在其他任何翻译单元中实现bar()foo()的情况下,匿名名称空间将保护您免受链接器歧义的困扰。

相关问题