错误 C2143:语法错误:':'之前缺少','

error C2143: syntax error : missing ',' before ':'

本文关键字:错误 C2143 语法      更新时间:2023-10-16

我正在尝试构建AM OpenSource游戏,但是在尝试构建时会遇到此错误。我一直在搜索最后半个小时,没有任何作用,这是指向

的错误
void duel::restore_assumes() {
    for(auto pcard : assumes)
        pcard->assume_type = 0;
    assumes.clear();
}

错误是

错误1错误c2143:语法错误:丢失',' ':'c: user user desktop project source ocgcore duel.cpp 108 1 ocgcore (Visual Studio 2010)

MS VC 2010不支持C 2011中介绍的语句范围。但是它具有其自己的语言扩展:for each

尝试更改此代码

void duel::restore_assumes() {
    for(auto pcard : assumes)
        pcard->assume_type = 0;
    assumes.clear();
}

to

void duel::restore_assumes() {
    for each (auto pcard in assumes)
        pcard->assume_type = 0;
    assumes.clear();
}

否则,您可以使用对象假定的迭代器或某些标准算法使用普通循环,例如std::for_each

如下所示:C 11编译器支持

MSVC2010无法使用

基于范围的循环,而是MSVC2012(版本11)。因此,如果您使用2010年编译器,此代码将不会编译。

错误消息使其很明显:编译器在语句中没有期望: