2012-10-23 46 views
0

我看到了类似的路线 Specify Array from Command Line ArgumentC++默认数组大小控装置,带命令行参数

虽然我的问题是有点不同的一个问题。

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

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

有人可以提出一种解决方法吗?

谢谢。

回答

1

C++不支持可变长度数组。

您使用的是std::vector,而不是更好:

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

真。但即使我提供了默认大小(应该被覆盖,如果需要,通过命令行参数)它不应该工作吗? – algoProg

+0

@Gurunath不,它甚至不应该使用默认大小,因为它看起来不是编译时常量。 –

+0

我知道你是对的,但我认为会有一些解决办法。我无法使用矢量,因为我创建的数组实际上是预定义的数据结构(SystemC,基于C++的HDL语言)。我甚至尝试过unsigned int NOC_SIZE = DEFAULT; #define DEFAULT 16,但结果相同。 – algoProg