在Boost和Qt库中有哪些命名空间标识符
What namespace identifiers are in Boost and Qt libraries?
我最近开始使用boost和Qt。我想知道是否所有的Boost库(头)包装成一个命名空间:Boost?或者还有其他名称空间吗?
同样的问题Qt,它看起来像Qt库没有命名空间在所有?所以我开始用这些标志构建Qt:
configure -shared -debug- release -ltcg -qtnamespace qt nmake
可以吗?
一般来说,是的-所有boost声明都在全局::boost
命名空间下。
然而,我知道一个例外:
绑定表达式占位符_1
, _2
等位于全局"匿名"命名空间中,因此可以正确地引用为:
boost::bind(&f, ::_1, ::_2);
请注意,这些占位符没有外部链接,并且是静态的(本地翻译单元)
我经常使用boost::matrix::ublas
,但是boost有许多名称空间。您可以在您关心的特定boost子目录中运行该命令的变体:
grep namespace * | sed -e 's/.*namespace//' -e 's///.*//' -e 's/ *{.*//' | sort | uniq
您的问题通常应该是:在我当前的项目中使用哪些名称空间是合适的?例如,哪些名称空间看起来有用,但实际上是内部boost的东西。
作为规则,用户不需要在boost的细节命名空间中有任何内容,但是您也会发现用于实现细节的其他命名空间。例如,boost::math::tr1
只导入普通的C数学函数。
是的,Boost库通常把它们的东西放在boost
命名空间或它的子命名空间中。有些可能定义全局符号,但文档会告诉您是否如此。
Qt对名称空间的使用非常有限。它更喜欢用Q或Qt作为其所有符号的前缀,尽管它使用Qt
命名空间作为某些标识符,也许还有其他一些标识符。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 将以"_[a-z0-9]"开头和"using"的标识符导入全局命名空间是否定义良
- #define 命名空间的标识符中带有 :: (双冒号)
- 错误:标识符"cout"未定义。<iostream> 包含并使用命名空间 std;
- 不同文件中同一命名空间中的 2 个不同枚举中的相同标识符
- 在Boost和Qt库中有哪些命名空间标识符
- 为什么遗留C标识符不需要命名空间std
- c++中使用dllexport的命名空间和标识符
- c++命名空间/标识符问题