我对使用声明有点困惑。我理解using foo::bar;
将符号bar
从名称空间foo
导入到当前名称空间,但这是静态还是动态发生的?
更具体地说,使用声明会导致开销吗?是否可以根据条件导入具有相同名称的不同符号? (那将是不好的做法,但我一直很好奇)
感觉它应该是静态的,但我找不到任何证实这一点......
答案 0 :(得分:8)
命名空间解析在编译时发生。您无法在运行时动态更改它们。
根据条件导入不同符号的一种方法是使用预处理程序指令和宏:
#mmm976@MAFINFWWWPV02
答案 1 :(得分:2)
using
中的 c++
是编译时指令,即它仅影响编译器在编译期间解析名称的方式
是否可以根据条件导入具有相同名称的不同符号?
取决于你所说的条件。如果预处理器的条件如#ifdef
那是可能的。如果您考虑运行时条件,那么在运行时不执行using
答案 2 :(得分:0)
使用声明看起来像任何其他声明。它有自己的范围取决于它的写入位置。您可能无法动态声明变量。