【问题标题】:What version of C++ am I using?我使用的是什么版本的 C++?
【发布时间】:2020-07-12 08:07:48
【问题描述】:

我正在学习 C++ 编程课程,这是我大学提供的 2/2 的 C++ 课程,我问我的教授我们使用的是哪个版本的 C++,他不知道。

我在这里看了一圈,发现了一堆不同的答案,基于 G++ 不支持某些版本和支持某些版本的 C++,等等-...

我的一般问题:

  1. 我使用的是什么版本的 C++?

  2. 我可以使用哪些版本的 C++?

  3. 我使用的C++版本的优缺点?

  4. 我现在还应该担心不同版本的 C++ 吗?

g++ --version 的输出:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

我当前的 G++ 编译器版本:4.2.1

IDE:Eclipse C++ 2020-03

操作系统:MacOSX MoJave

我们用于类的代码片段:

void find(int IDs[], string posts[], int size)
{
    int search = -9999;
    bool found = false;
    cout << "Enter user ID: " << endl;
    cin >> search;

    while (search < 0)
    {
        cout << "In-correct ID Type" << endl;
        cout << "Enter user ID: " << endl;
        cin >> search;
    }
    cout << "Posts by user " << search << ":" << endl;
    cout << endl;
    for (int i = 0; i < size; i++)
    {
        if (IDs[i] == search)
        {
            cout << *(posts + i);
            found = true;
        }
    }
    if (found == false)
    {
        cout << "N/A posts for user " << search << endl;
    }
    cout << endl;
}

【问题讨论】:

  • 我的当前版本 G++ 编译器:4.2.1 -- 那是一个非常旧版本。
  • 如果它真的是 g++ 4.2.1,那么我认为该事件不支持 c++11,所以你可能会被 c++03 卡住。由于这是在 Mac OS 上,您可以编辑您的问题以显示 g++ --version 的输出。
  • @G.M. - 进行了编辑。

标签: c++ eclipse g++


【解决方案1】:

根据gcc 4.2.4 manual

standard 可以是以下之一:
...为简洁起见,省略了其他选项...
- c++98
1998 ISO C++ 标准加上修正案。
- gnu++98
与 -std=c++98 加 GNU 扩展相同。这是 C++ 代码的默认设置。

没有为有效的 C++ 版本提供其他选项。

您的默认 C++ 版本是: C++98(加上 gnu 扩展!不管是什么意思)

您可能选择的 C++ 版本有: C++98(加上 gnu 扩展)

【讨论】:

  • 所以你说我使用的是 C++ 98?
  • 我相信是的。
【解决方案2】:
  1. 我使用的是什么版本的 C++?

如果您使用默认设置,可能是 GNU C++ 98(注意:与 (标准)ISO C++ 98 不同)

  1. 我可以使用哪些版本的 C++?

gcc 4.2.4 仅支持 ISO C++ 98GNU C++ 98

  1. 我使用的 C++ 版本的优缺点?

第一个 ISO 标准化版本,顾名思义,于 1998 年左右发布。 此后已发布主要修订版。

非常古老和笨重,但仍然主要存在于行业中。

后来的修订使语言更加优雅和易于使用, 在可能的情况下,至少使用 ISO C++ 11 (2011)(也称为现代 C++)或更高版本被认为是最佳实践。

  1. 我现在还应该担心 C++ 的不同版本吗?

如果您上课主要是为了学习语言而不是编程基础知识...

尤其是如果您打算在课堂外积极使用该语言...

是的

但由于学习以后的修订细节'可能具有挑战性,至少现在知道主要区别是什么。

--

参考:gcc 4.2.4 manual

【讨论】:

  • 我从 Eclipse MacOSX GCC 编译器运行它,当我运行我的代码时,我在 IDE 中运行它......那会有什么不同吗?
  • 考虑到语言和 IDE 都只是一种工具。作为程序员,您应该能够选择最合适的工具来实现您的目标,并且尽可能不要让工具任意约束您。在这种情况下,如果您想声称知道如何使用 c++,您应该能够判断一个特定的(或可用的,更频繁的)版本是否适合您需要做的事情。另外我认为,在课程结束时,您想了解 c++ 语言本身而不是 GCC 或 Eclipse,并且如果您愿意,最终能够无缝切换到另一个实现。
  • 附带说明:我认为教授说他不知道是很严重的。比如,他想教你一些东西,但他不知道他在教你什么?
  • 非常聪明,但他只是说他从不喜欢看。
【解决方案3】:

来自g++ --version的输出...

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

看来您实际上正在使用clang++ 10.0.1。这应该对语言规范有好处。根据this table 最高并包括 c++17 以及一些选定的 c++20 功能。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2010-11-22
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多