【发布时间】:2014-08-28 02:25:33
【问题描述】:
我定义了以下结构
typedef const struct _txmlAttribute
{
const char * const ns;
} txmlAttribute;
在下面的函数中,我想初始化我的结构的动态数组:
int func(txmlAttribute* attrs){
attrs = (txmlAttribute*) { {"as"}, {"bs"}};
return 0;
}
int main(){
txmlAttribute* attrs;
func(attrs);
return 0;
}
但我收到以下警告:
main.c: In function ‘func’:
main.c:13:5: warning: braces around scalar initializer [enabled by default]
attrs = (txmlAttribute*) { {"as"}, {"bs"}};
^
main.c:13:5: warning: (near initialization for ‘(anonymous)’) [enabled by default]
main.c:13:5: warning: initialization from incompatible pointer type [enabled by default]
main.c:13:5: warning: (near initialization for ‘(anonymous)’) [enabled by default]
main.c:13:5: warning: braces around scalar initializer [enabled by default]
main.c:13:5: warning: (near initialization for ‘(anonymous)’) [enabled by default]
main.c:13:5: warning: initialization from incompatible pointer type [enabled by default]
main.c:13:5: warning: (near initialization for ‘(anonymous)’) [enabled by default]
main.c:13:5: warning: excess elements in scalar initializer [enabled by default]
main.c:13:5: warning: (near initialization for ‘(anonymous)’) [enabled by default]
那为什么要这样做?以及如何清除它?
【问题讨论】:
-
你不是在初始化,你是在赋值。
-
@hacks 这是一个复合文字 :) 编辑:从头开始,它 看起来 像一个复合文字。但我想这是数组初始化的尝试。
-
@Quentin;是的。但是它是如何兼容
txmlAttribute类型的呢? -
@hacks 这将是 2 个
txmlAttributes 数组的初始化程序。我猜。 -
@Quentin;正确的。我没想到:)。 MK's answer 在这里似乎是正确的。