gpt4 book ai didi

模块中的 C++ "Using"

转载 作者:行者123 更新时间:2023-12-03 06:52:08 25 4
gpt4 key购买 nike

一个在头文件中“使用命名空间”被认为是不好的做法( Why is "using namespace std;" considered bad practice? )的原因之一是因为它会将 using 指令“泄露”给包含您的头文件的每个人。这仍然是 C++ 模块的情况还是我可以“安全地”放置例如using namespace stdusing std::cout进入我的模块? :

module;
#include <iostream>
export module Module;

using namespace std;
// using std::cout;
export void greet() {
cout << "Hello World!\n";
}

最佳答案

任何using的范围这种声明是正在编译的翻译单元。所有模块文件(以某种形式的模块声明开头的文件)都是一个单独的翻译单元。所以它就像任何其他非 export模块中的 ed 声明:本地的。
话虽如此,这只是避免 using namespace std 的原因之一。 ;还有很多其他的。它可以对名称查找造成严重破坏。包含的名称可能与您的命名空间中使用的全局名称和名称发生冲突。等等。
但是,雇用 using std 的特定组件的声明命名空间要合理得多,因为不这样做的主要原因是为了防止泄漏。另外,namespace别名也是一个好主意,对于像 std::chrono 这样的子命名空间, std::filesystem ,等等。

关于模块中的 C++ "Using",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64558258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com