c++ - 如何在 macOS 的旧扩展 clang 和 gcc 编译器中初始化数组和 vector ?

标签 c++ macos clang

我有一个 C++ 代码。它适用于 Windows、Ubuntu 和 Fedora。 现在我想为 macOS 编译它。我遇到了一些错误,比如

error: expected expression
error: variable-sized object may not be initialized

我有很多行

int A[n][2] = {{2, 5},{2, 6},{3, 4},{3, 7},{4, 3},{5, 2},{6, 2},{7, 3}};
int B[n][2] = {{8, 15},{8, 16},{9, 14},{9, 17},{10, 13},{10, 14},{10, 17},{11, 12},{11, 15},{11, 16},{12, 11},{13, 10},{14, 9},{14, 10},{15, 8},{15, 11},{16, 8},{16, 11},{17, 9},{17, 10}};

我搜索是因为 macOS 中安装了旧的 clang 和 gcc 扩展(我使用的是 Mojave 10.14.0)

我不知道该怎么做才能解决这个问题。

最佳答案

您可以像这样定义它们:

int A[][2] = {{2, 5},{2, 6},{3, 4},{3, 7},{4, 3},{5, 2},{6, 2},{7, 3}};
int B[][2] = {{8, 15},{8, 16},{9, 14},{9, 17},{10, 13},{10, 14},{10, 17},{11, 12},{11, 15},{11, 16},{12, 11},{13, 10},{14, 9},{14, 10},{15, 8},{15, 11},{16, 8},{16, 11},{17, 9},{17, 10}};

然后 clang 很高兴。

如果您指定了 n,那么您需要确保初始化列表适合定义的结构。

关于c++ - 如何在 macOS 的旧扩展 clang 和 gcc 编译器中初始化数组和 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675118/

相关文章:

c++ - 发布顺序的概念在实践中有用吗?

c++ - Isavailable 不是 QSound 的成员

c++ - 如何修复未对齐的指针 (char**)

clang - 如何在 CentOS 7 上安装 Clang 和 LLVM 3.9

qt - 使用 clang 和 lld 生成 .map 文件

c++ - 应用程序在没有附加调试器的情况下抛出异常

c++ - b2 Shape 等于 0xCDCDCDCD,在 Create Fixture 时抛出异常

ios - Xcode - 如何修复 'NSUnknownKeyException' ,原因 : … this class is not key value coding-compliant for the key X"error?

r - 为什么 which 和 Sys.which 返回不同的路径?

c - xmm clang 汇编注释中的字节顺序