c++ - 使用 const integer 声明数组

标签 c++ arrays constants

我试图在 C++ 中声明一个 int 数组并发现了这个问题。以下代码在 g++ 编译器上运行良好,但在 Visual Studio 上编译失败。我跟踪 Bruce Eckel 并找到了这段代码。

#include<iostream>

int main()
{
    const int j = std::cin.get();
    char buf[j];
}

j 只是一个 int 会是个问题,据我所知。由于 j 的值在运行时将是 const,因此程序应该被编译。如果我有任何错误,请纠正我。

最佳答案

Since the value of j would be const during the run-time, the program should get compiled.

不,jconst 特性与这里无关。 C++ 目前仅支持静态大小的 C 数组。它的大小必须是一个编译时常量

如果你想要一个动态大小的数组,使用std::vector

默认情况下 g++ 编译这个的事实有点不幸(为了兼容性)。您应该在使用 g++ 时使用 -pedantic 标志以确保不启用此类编译器扩展(当然使用编译器扩展本身并不坏,但在这种情况下并没有任何优势) .

关于c++ - 使用 const integer 声明数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919647/

相关文章:

c# - 使用 P/Invoke 编码双参数

c++ - 将 double 置换为 float 时的时间性能

c++ - double[2] 错误 vector

Objective-C 常量 : NSString comparison using ==?

c++ - _MSC_VER 是否取决于工具包版本?

c++ - 涉及指针成员变量和多态性的很奇葩的问题

java - 如何编写一个方法,将单词向后存储在从用户输入接收到的数组列表中,直到输入 "done"?

java - 存储两种类型引用的哈希表数组

c++ - 使用辅助函数 (c++) 定义运行时已知的全局常量变量

c - 使用 '.' token 定义常量