我正在开发一个使用许多第三方库的大型项目。由于这个事实,我遇到了一些模棱两可的错误。一些函数在全局名称空间中定义,也在不同的名称空间中定义。
我知道您可以指定“使用”来说明要使用的命名空间,但是我不知道如何为文件指定它,而不是在每个错误前面加上“::”。
如果有人知道方法,或者有更好的方法,我会全神贯注。
背景:
如果我需要非全局命名空间,那将不是问题,因为我可以将“使用”与该命名空间一起使用......好奇是否有一种方法可以对全局命名空间引用进行“使用”
我正在开发一个使用许多第三方库的大型项目。由于这个事实,我遇到了一些模棱两可的错误。一些函数在全局名称空间中定义,也在不同的名称空间中定义。
我知道您可以指定“使用”来说明要使用的命名空间,但是我不知道如何为文件指定它,而不是在每个错误前面加上“::”。
如果有人知道方法,或者有更好的方法,我会全神贯注。
背景:
如果我需要非全局命名空间,那将不是问题,因为我可以将“使用”与该命名空间一起使用......好奇是否有一种方法可以对全局命名空间引用进行“使用”
如果在两个不同的命名空间下有两个同名且参数化的函数,则不能:
using namespace x;
using namespace y;
因为编译时会出现歧义错误。
选项是在函数前面加上 x:: 或 y:: 或限定命名空间:
int test( void )
{
using namespace x;
}
int test1( void )
{
using namespace y;
}
当然,这仅在您不在单个函数中使用两个命名空间时才有效。
更新:指定“全局”命名空间的唯一方法是在函数调用前加上 ::
在某些情况下,它有助于重新排列标题,因此使用全局命名空间的标题位于前面 -