模块名称是否驻留在单独的"name space"中,或者它们可能与例如变量名称发生冲突?
Does module names reside in a separate "name space", or could they collide with e.g. variable names?
我猜/希望模块名称不会与例如变量名称发生冲突。有人可以确认这一点,也许可以参考(即将推出的(标准中的合适部分吗?
文件: a_module.cc
export module a_module;
export int add(int a, int b) { return a + b; }
// Question-1: Is using 'a_module' below as variable name allowed, or does
// the 'export module a_module' above prevent us from using that name?
int a_module = 11;
文件: main.cc
import a_module;
// Question-2: Is using 'a_module' below as variable name fine, or does the
// 'import a_module' above prevent us from using that name?
int a_module = 42;
int main() { return add(1, 2); }
很难引用否定,但是是的 - 模块名称不能与非模块名称冲突。
我们在C++中有很多种类的名称查找,但它们都不考虑模块名称。就像语句一样,f(x);
可以找到许多名为 f
和 x
的东西,这些()
甚至可能意味着不同的东西,但它永远找不到名为 f
或 x
的模块。将模块命名为一个或另一个或两者不会更改任何查找。
同样,在序言中,所有与module
相关的语句(import
、export
、模块声明或分区声明(只考虑模块名称。如果您有类似以下内容:
import M1;
import M2;
而M1
恰好导出了一些名称M2
,这不会破坏M2
的后续import
。我们只在寻找,具体来说,module
名为 M2
.
您不必担心这两件事之间的碰撞。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 局部变量名称冲突
- 如何使替换 c 函数的变量名成为错误?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- C++类名冲突
- 如何解决两个不使用命名空间的第三方库之间的类名冲突?
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 变量名为TYPE_BOOL(c++代码)与ios宏冲突
- 包含windows.h会导致与本地变量名冲突