为什么在C ++中将'int'用作int,为什么不用作std :: int?

时间:2020-03-09 10:23:01

标签: c++ std standards

与在当前C ++中将standard进行了所有化处理不同,是否有任何特定的原因要使intchar,...,main()和其他内容退出。 (因为它们不是特定于语言的,所以不谈论+-% ..)

为什么不这样:

std::int std::main(std::int argc, std::char *argv[])
{
    //Sample C++ code (incorrect with current standards though)
    std::return 0;
}

标准化不是超出标准范围吗?

我相信,它们是编写程序时随处可见的基本组件,无论是简单的还是复杂的。它们只是遵循 DRY 原则而未包含在标准化中。

4 个答案:

答案 0 :(得分:9)

the C++ standard中包含intreturn之类的关键字以及main()函数。 std并不意味着只有那些东西是标准化的。相反,它引用标准库中的内容(类似于关键字,它是标准的一部分)。要使用标准库,需要使用诸如#include <vector>之类的包含文件,但可以在没有任何#include的情况下使用关键字。

答案 1 :(得分:9)

std::是标准库的名称空间名称。但是C ++具有内置类型,这些类型更为基本。实际上,标准库的重要部分是使用int之类的类型构建的。如果标准库依赖于它本身,您将看到鸡和蛋的问题。

答案 2 :(得分:3)

您提到的类型是关键字。关键字不是标识符,因此不能属于范围或名称空间。在程序解析过程中,发现关键字的时间要早​​于标识符。

更改程序入口点的名称空间(当前为::main)意味着到处的所有链接器都必须更新,因此我怀疑是否会支持这种移动。同样也违反了std用于标准库而不用于用户代码,而用户编写main中使用的代码的原则。

答案 3 :(得分:0)

据我所知。 Int是原始(原始)数据类型。主要数据类型已经在编程语言中定义,也称为原始或内置数据类型。 “ int”数据类型就是其中之一。在某些语言中,您可以看到一些byte,short,int,long,char,float,double或boolean关键字用作其自身。

希望我有帮助。

相关问题