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
。我的问题是我想创建bar
和foo
私有函数,但仍然在单独的.cpp
文件中实现它们,所以我不能使用空白命名空间(至少我不这么认为)。我应该怎么办?
解决方案
我看不出有什么理由应该在执行 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()
在任何其他翻译单元中实现。
推荐阅读
- node.js - 有没有一种方法可以根据客户、网络爬虫和网络应用客户端来呈现不同的页面?
- ruby-on-rails - Bundler 从 Windows 运行,在 docker 映像中失败:Bundler 找不到 gem "nokogiri" 的兼容版本
- c# - 排序列表并根据顺序选择对象
- android - 使用 ImageView 淡入动画
- angular - Angular Material - Directly passing an object to a FormControl
- c# - 为 asp.net core 2.1 创建 Webhook?是否支持它?
- java - 为什么使用 UTF-16 编码会得到一个奇怪的字节序列?
- windows - How to fix issue mounting Synology share in Docker using Windows 10
- ios - 如何使用 UITableViewCell 中的委托方法设置 UISlider
- c# - Show a Form into a Microsoft.VisualStudio.TestTools.UnitTesting