在Boost和Qt库中有哪些命名空间标识符

What namespace identifiers are in Boost and Qt libraries?

本文关键字:命名空间 标识符 Boost Qt      更新时间:2023-10-16

我最近开始使用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命名空间作为某些标识符,也许还有其他一些标识符。