【发布时间】:2014-11-07 15:45:12
【问题描述】:
在 C 中,有没有办法用变量初始化结构成员结构,或者我必须用另一个初始化列表来初始化?我意识到这些问题的措辞非常混乱,所以这里有一个简单的代码示例
#define MAX_VECTOR_SIZE 10
struct ImmutableVectorC
{
const short vectorSize;
int vectorElements[MAX_VECTOR_SIZE];
};
struct ImportantVectors
{
struct ImmutableVectorC vec1;
struct ImmutableVectorC vec2;
struct ImmutableVectorC vec3;
struct ImmutableVectorC vec4;
struct ImmutableVectorC vec5;
}
假设我定义了这些结构。我想用另一个结构初始化一个ImportantVectorsstruct。有没有可能按照这些思路做点什么?
int main()
{
struct ImmutableVectorC tempStruct =
{
.vectorSize = (short)2,
.vectorElements =
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
struct ImportantVectors initial =
{
.vec1 = tempStruct,
.vec2 = tempStruct,
.vec3 = tempStruct,
.vec4 = tempStruct,
.vec5 = tempStruct
};
}
Visual Studio 给出了神秘的错误,我不确定是不是因为这些不是编译时常量,或者一些内存管理问题等。
编辑:VS给我的错误是:
error C2440: 'initializing' : cannot convert from 'struct ImmutableVectorC' to 'const short'
【问题讨论】:
-
我尝试将 tempStruct 设为 const,但它给了我与错误消息中的 const 限定符相同的错误。它似乎确实适用于结构的原始成员(在 VS 中)。
-
看起来类似于这个问题:stackoverflow.com/questions/24090739/… 其中它被描述为编译器中的一个已知错误
标签: c struct initialization