【问题标题】:c++ default array size override with command line argumentsc++ 使用命令行参数覆盖默认数组大小
【发布时间】:2012-10-13 11:45:40
【问题描述】:

我在类似的行中看到了一个问题 Specify Array from Command Line Argument

虽然我的问题有点不同。

我有多个文件实现相同大小 (NOC_SIZE) 的数组。我的程序有一个默认模式和一个用户模式(命令行参数)。我给了'unsigned int NOC_SIZE = 16;'在 main 函数开始之前在我的代码中添加一行。在另一个头文件中,我声明了一个带有参数“static unsigned int NOC_SIZE;”的结构(noc_package)。这个头文件包含在所有需要的文件中。

但是在我声明了一个数组的文件中 (int arr[noc_package :: NOC_SIZE]) 它给出了一个错误,说数组绑定不是整数。

有人可以提出解决办法吗?

谢谢。

【问题讨论】:

    标签: c++ arrays command-line-arguments


    【解决方案1】:

    C++ 不支持变长数组。

    您最好使用std::vector

    std::vector<int> arr(noc_package::NOC_SIZE);
    

    【讨论】:

    • 是的。但即使我提供了默认大小(如果需要,应该通过命令行参数覆盖)它不应该工作吗?
    • @Gurunath 不,它甚至不应该使用默认大小,因为它似乎不是编译时常量。
    • 我知道你是对的,但我认为会有一些解决方案。我不能使用向量,因为我创建的数组实际上是预定义的数据结构(SystemC,基于 C++ 的 HDL 语言)。我什至试过 unsigned int NOC_SIZE = DEFAULT;使用#define DEFAULT 16,但结果相同。
    • @Gurunath 相同的结果,因为您要问的是不可能的。我看不到您要创建的数组是预定义的数据结构,因为您只是在创建它...
    • 如果您所说的“命令行”是可执行文件的命令行,那么不,您根本不能。可执行文件已使用预设的数组大小构建。如果是编译器的命令行,是可以的。为什么你认为你不能使用向量?
    猜你喜欢
    • 2021-05-05
    • 2013-10-21
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多