如何在macOS中的旧扩展clang和gcc编译器中初始化数组和向量

How to initialize arrays and vectors in old extension clang and gcc compilers in macOS?

本文关键字:编译器 gcc 初始化 向量 数组 clang 扩展 macOS      更新时间:2023-10-16

我有一个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,则需要确保初始值设定项列表能够适应定义的结构。