数组初始化的g ++编译问题

时间:2012-08-30 13:29:57

标签: arrays gcc

gcc在以下代码中编译正确

enum AVMediaType {
    AVMEDIA_TYPE_UNKNOWN = -1,
    AVMEDIA_TYPE_VIDEO,
    AVMEDIA_TYPE_AUDIO,
    AVMEDIA_TYPE_DATA,
    AVMEDIA_TYPE_SUBTITLE,
    AVMEDIA_TYPE_ATTACHMENT,
    AVMEDIA_TYPE_NB
};

static int wanted_stream[AVMEDIA_TYPE_NB]={
    [AVMEDIA_TYPE_AUDIO]=-1,   // Line 234
    [AVMEDIA_TYPE_VIDEO]=-1,
    [AVMEDIA_TYPE_SUBTITLE]=-1,
};

但是g ++会抛出以下错误

playerthread.cpp:234: error: expected primary-expression before '[' token

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

g ++不支持这些指定的初始值设定项,但它们是由gcc支持的。我不确定它是否完全符合C ++标准。如果您将代码简化为非常简单,您可以看到相同的内容:

int array[10] = { [1] = 5 };

在C语言中很好,而不是C ++。