自动生成的 cpp 文件中未知大小的多维数组的标头声明

Header declaration for multi-dimensional array of unknown size in auto-generated cpp file?

本文关键字:数组 声明 文件 cpp 未知 自动生成      更新时间:2023-10-16

作为我正在从事的项目的一部分,我有一个用python编写的工具,它可以读取CSV数据文件并生成一个包含静态声明的三维数组的c ++文件。数组的维度取决于 CSV 文件中的数据,并且可以从编译到编译而变化。

声明/定义如下所示:

const double aero_coeffs[81][25][8] = { ...

我已经编写了一个标题来伴随生成的 cpp 文件,我真的不希望也生成它。但是,如果我尝试这样做,我会收到错误:

extern const double*** aero_coeffs;

或者这个(我认为实际上只是等效的):

extern const double aero_coeffs[][][];

关于解决这个问题的最佳方法有什么想法吗?

你也许可以使用std::vector。使用新的 c++11 初始器列表语法,生成的文件可以非常相似。像这样:

std::vector< std::vector< std::vector< double > > > coeffs = {
    { {1, 2, 3}, {4, 5, 6} },
    { {7, 8, 9}, {0, 0, 0} } };

然后,在标题中,您只需使用:

extern std::vector< std::vector< std::vector< double > > > coeffs;