有谁知道我在哪里可以找到std :: namespace的列表? (对于C ++ 98)

时间:2014-10-10 20:58:21

标签: c++ compilation namespaces reserved-words

我想知道在包含using指令后我不应该将哪些单词用作变量。我似乎无法找到命名空间列表:(非常感谢帮助:)

3 个答案:

答案 0 :(得分:2)

std命名空间中所有名称的最权威列表是C ++标准。当前版本长度超过1300页,可能在std中包含数千个唯一标识符。除此之外,一些编译器还可能在std中包含一些特定于平台的标识符,并且这些标识符基本上没有记录 - 因此您必须检查相关编译器的源代码(如果可能的话),每次修补时再重新检查一次。

似乎令人生畏?很好,所以希望我能引起你的注意。

不要在代码中执行using namespace std特别是在标头文件中不要use namespace std。将您的标识符放入自己的名称空间。现在你不必关心其命名空间中的内容。无论你想要什么,都可以打电话。

我只是懒惰,但要聪明一点。如果您想从std提取特定名称,那么您不必一遍又一遍地输入std::,只需提取这些内容:

using std::string;

......没有你不需要的东西。但在您的CPP文件中执行此操作,绝不会在标题中执行此操作。

答案 1 :(得分:1)

更好的主意:不要在代码中使用using namespace std;。我从未听说过如何在std :: namespace中获取所有内容的列表。

答案 2 :(得分:0)

除了John Dibling的回答所提供的信息之外,我还想指出,即使你写using namespace std;,也不一定要避免std命名空间中的名字。您可以通过限定名称来解决存在using指令时的歧义。您甚至可以使用顶级::来限定“全局”命名空间中的名称。

#include <iostream>
using namespace std;

int cout;

int main() {
  ::cout = 10;
}

我想说明这一点的原因是我知道许多C ++程序员,即使使用它几年后,也不知道如何在全局命名空间中限定名称。