Boost#39;s quot;cstdintquot; Usage(提高使用率(Q))
本文介绍了提高使用率(&Q)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Boost的C99 stdint实现非常方便。不过,有一件事困扰着我。它们将所有类型定义转储到boost namespace
中。在使用此工具时,我有三个选择:
- 使用"
using namespace boost
" - 使用"
using boost::[u]<type><width>_t
" - 显式引用带有
boost::
前缀的目标类型;例如boost::uint32_t foo = 0;
- 选项№1有点违背了名称空间的要点。即使在局部作用域中使用(例如,在函数中),像函数参数这样的东西仍然必须像选项№3一样加上前缀。
- 选项№2较好,但此类类型较多,因此可能会产生噪音。
- 选项№3增加了极大的噪音;
boost::
前缀通常与相关类型的长度相同(≥)。
我的问题是:将所有这些类型引入全局命名空间的最优雅方式是什么?我应该只在
boost/cstdint.hpp
周围编写一个使用选项№2的包装并完成它吗?
另外,这样包装标头在VC++10上不起作用(标准库标头有问题):
namespace Foo
{
#include <boost/cstdint.hpp>
namespace boost_alias = boost;
}
using namespace Foo::boost_alias;
编辑:我猜另一个选择是使用预处理器使其在VC10上工作?获取上面的代码片段:
#ifndef FOO_HPP_INCLUDED
#define FOO_HPP_INCLUDED
#if _MSC_VER >= 1600 /*VC++ 10*/ || defined USE_NATIVE_STDINT_HEADER
#include <stdint.h>
#else
namespace cstdint_wrapper
{
#include <boost/cstdint.hpp>
namespace boost_alias = boost;
}
using namespace cstdint_wrapper::boost_alias;
#endif
#endif
我想是工作量减少了吧?
推荐答案
我只使用C99的stdint.h
(它现在实际上是在VS 2010中)。对于不包括它的Visual C/C++版本,我使用来自MinGW的公共域版本,我修改该版本以使用VC6(从我不得不在VC6中工作时起):
- http://snipplr.com/view/18199/stdinth/
您可以在此SO问题中考虑其他几个选项:C99 stdint.h header and MS Visual Studio
如果您想继续使用boost/cstdint.hpp
,我想说的是,建议实现一个将类型带入全局命名空间的包装器标头。
boost/cstdint.hpp
是否提供了stdint.h
中没有介绍的我应该知道的内容?
这篇关于提高使用率(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:提高使用率(&Q)


基础教程推荐
猜你喜欢
- 如何通过C程序打开命令提示符Cmd 2022-12-09
- 在 C++ 中计算滚动/移动平均值 2021-01-01
- 静态库、静态链接动态库和动态链接动态库的 .lib 文件里面是什么? 2021-01-01
- 如何在 C++ 中初始化静态常量成员? 2022-01-01
- C++结构和函数声明。为什么它不能编译? 2022-11-07
- 如何将 std::pair 的排序 std::list 转换为 std::map 2022-01-01
- 如何检查GTK+3.0中的小部件类型? 2022-11-30
- 这个宏可以转换成函数吗? 2022-01-01
- 常量变量在标题中不起作用 2021-01-01
- 我有静态或动态 boost 库吗? 2021-01-01