gpt4 book ai didi

c++ - 使用命名空间和包含

转载 作者:行者123 更新时间:2023-11-30 00:43:28 25 4
gpt4 key购买 nike

这个问题可能很简单(并且可能是重复的)。

据我所知,一个 C/C++ 头文件(其中有一个 using namespace),当被其他源文件使用时,它被复制到 所在的位置#include 指令在该源文件中。

此外,考虑到源文件使用相对较多的 include 指令,并且整个标准库可能有几个“重新定义”(仅针对不同的实现)。

这里是主要问题:如果源文件没有using namespace 语句,我如何知道我当前在源文件中的任何位置使用了哪些命名空间?

我正在通读源文件,但我不知道正在使用哪个命名空间。

可以通过使用类似 ::std::getline() 的东西来覆盖命名空间的聪明之处。

如果没有确定命名空间的简单方法,那么重构这些文件是否公平,例如使用 string 将其替换为 ::std::string?

最佳答案

如果您没有 using namespace ... 指令,则您没有使用任何 namespace 。一般而言,您的代码应该引用标准库中的内容及其全名,例如,std::coutstd::get_line()std::字符串

是的,您可以通过using namespace std; 以失去清晰度和有时神秘的编译失败或更糟糕的运行时失败为代价来节省自己的一些输入。之后,你不必在标准库中的东西的名字前面加上std:::cout, get_line()字符串。 using 指令将这些名称放入全局命名空间,以及一堆您可能不感兴趣的污泥。

如果您使用类似using namespace std; 的方式,它应该出现在源文件中,从不出现在 header 中。这样您就可以通过查看文件的顶部来判断哪些 namespace 已被“使用”。您不必跟踪所有 header 以查找流浪的 using 指令。

关于c++ - 使用命名空间和包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390590/

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