use-declarations是静态的吗?

时间:2016-08-05 13:24:56

标签: c++ using-directives

我对使用声明有点困惑。我理解using foo::bar;将符号bar从名称空间foo导入到当前名称空间,但这是静态还是动态发生的?

更具体地说,使用声明会导致开销吗?是否可以根据条件导入具有相同名称的不同符号? (那将是不好的做法,但我一直很好奇)

感觉它应该是静态的,但我找不到任何证实这一点......

3 个答案:

答案 0 :(得分:8)

命名空间解析在编译时发生。您无法在运行时动态更改它们。

根据条件导入不同符号的一种方法是使用预处理程序指令和宏:

#mmm976@MAFINFWWWPV02

答案 1 :(得分:2)

using中的

c++编译时指令,即它仅影响编译器在编译期间解析名称的方式

  

是否可以根据条件导入具有相同名称的不同符号?

取决于你所说的条件。如果预处理器的条件如#ifdef那是可能的。如果您考虑运行时条件,那么在运行时不执行using

答案 2 :(得分:0)

使用声明看起来像任何其他声明。它有自己的范围取决于它的写入位置。您可能无法动态声明变量。