为什么boost shared_ptr包含带有close()的标头
Why does boost shared_ptr include header with close()?
我使用的是boost 1.49.0,我想知道为什么boost::shared_ptr在全局命名空间中声明close(),也就是这个程序:
#include <boost/shared_ptr.hpp>
int main() {
int h = 3;
close(h);
return 0;
}
编译并运行。我不希望close()是shared_ptr接口的一部分。对我来说,意外的结果是在我的程序中发现了一个错误,该错误使用了一个基于句柄的接口的C库。我没有调用库的handle-close函数,它有一个类似H5Dclose的独特名称(我使用的是hdf5库、C接口,而不是C++接口,事后看来,我不必担心C++接口的这种问题),而是错误地调用了close而不是H5Dclone,这最终导致了编译(并调用了unix、文件句柄close函数)。如果能得到一个编译器错误,那就太好了。
没有。该标头中没有符号close
。
我想Boost使用的一些标准头是在利用该标准的宽松性,使C库函数在全局命名空间中可用。
如果能得到一个编译器错误,那就太好了。
对我来说,为H5Dclose
键入close
远远超出了编译器错误的预期。无论如何,你的单元测试都会发现它,对吧?
相关文章:
- ofstream::close() 是否在 Linux 上调用同步?
- 引用 std::shared:ptr 以避免引用计数
- 如果我在字符数组上使用 close() 会发生什么?
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- 无法使用 libtool 将 -shared 参数传递给 g++
- 链接 boost 库时"Error while loading shared libraries"引发的,除了我无法使用 root 访问权限来修复它
- 解决方法:'can not be used when making a shared object; recompile with -fPIC'使用Cmake。使用普通的 g++ 工作
- gcc -fPIC vs. -shared
- ZeroMQ 在 context.close() 中被阻止.如何在C++中安全地关闭套接字和上下文?
- inData.open and inData.close in C++
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 为什么 QQuickWindow->close() 不从 rootObjects 中删除对象?
- 如何在OS X上阻止QProgressDialog的'native close button'?
- "directory containing symbolic versions of my app's shared libraries"的位置(ndk-stack)
- 对ifstream对象调用close时出现分段错误
- 关闭文件流时出错,其存在取决于与 C++ 中的 .close() 语句相同的布尔值
- Qt自定义插件无法加载 - "Shared Library Not Found"
- QSqlDriver::close使应用程序崩溃
- C - Shared Library - dlopen, dlsym
- 确保QSerialPort.close在程序执行完成之前完成