2017-08-03 103 views
0

我想创建一个数组里面的结构。我希望数组大小应该在编译时设置。这是硬编码,但使用一个变量,所以我可以在代码中轻松更改它。问题是,当我在结构定义之前的标头中使用const int时,我收到了链接器错误。这里是我的代码:如何声明一个结构中的const int项的数组

从头文件:

const int t_Module_qInternalParams =64; 

typedef struct Module{ 
    double internalParams[t_Module_qInternalParams]; 
} t_Module; 
+2

为什么不使用'#define'? –

+0

谢谢@FelixPalmen仍然陷入堆栈溢出的困境 – matt

+0

'这是硬编码,但使用了一个变量,所以我可以在代码中轻松更改它。 “......那是什么? –

回答

2

此:

const int t_Module_qInternalParams = 64; 

是在这个意义上,对象初始化后不能被修改的不断,但它的仍然是一个变量。特别是,t_Module_qInternalParams而不是 a 编译时常量,如声明者所要求的。

一个简单的解决方案是使用一个预处理宏代替:之前

#define MODULE_INTERNALPARAMS 64 

这只是扩大到64编制阶段开始,当然,64一个编译时间常数

+0

谢谢。我还刚刚开始! – matt