1

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

这里有什么问题?

4

1 回答 1

1

g++ 不支持这些指定的初始值设定项,但 gcc 支持。我不确定它在 C++ 标准中是否允许。如果您将代码简化为非常简单的,您会看到相同的结果:

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

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

于 2012-08-30T13:52:12.430 回答