error C2143: 语法错误 : 缺少“;”(在“{”的前面)

运行环境OS:Win32 sp3 32位    VS2010
    最近初学cocos2d,根据教程在头文件添加2行代码,如下:
            CCAnimation **walkAnimation;
            CCAnimation *createAnimationByDirection(int direction);
    出现了问题:error C2143: 语法错误 : 缺少“;”(在“*”的前面)
                      error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    这根本是一个简单地用CCAnimation类声明一个数组对象walkAnimation,整整折腾了2天,后面发现个意外的解决方法:
    只需改为:cocos2d::CCAnimation **walkAnimation;
                   cocos2d::CCAnimation *createAnimationByDirection(int direction);

    问题解决!!!完全想不到命名空间解析的错误。。。希望对大家有用。


    另外,一种情况,是在基本代码没有错误的情况下,但是却有无数多的错误,如下:

1> Hero.cpp
1>d:\vsprojects\mtgames\mtgames\classes\game\gamemap.h(28): error C2065: “Enemy”: 未声明的标识符
1>d:\vsprojects\mtgames\mtgames\classes\game\gamemap.h(28): error C2059: 语法错误:“>”
1>d:\vsprojects\mtgames\mtgames\classes\game\gamemap.h(33): error C2065: “NPC”: 未声明的标识符
1>d:\vsprojects\mtgames\mtgames\classes\game\gamemap.h(33): error C2059: 语法错误:“>”
1>d:\vsprojects\mtgames\mtgames\classes\game\gamemap.h(40): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\enemy.h(10): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\enemy.h(12): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\enemy.h(13): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\enemy.h(16): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\npc.h(9): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\npc.h(20): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(5): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(10): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(11): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(13): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(16): error C2039: “instance”: 不是“`global namespace'”的成员
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(17): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(21): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(24): error C2039: “release”: 不是“`global namespace'”的成员
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(25): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\singleton.h(30): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\animationmanager.h(10): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\animationmanager.h(23): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\global.h(14): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\until\global.h(26): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.h(9): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.h(18): error C2146: 语法错误: 缺少“,”(在标识符“data”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.h(18): error C2065: “data”: 未声明的标识符
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.h(18): error C2143: 语法错误 : 缺少“,”(在“)”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.h(35): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(3): error C2653: “Hero”: 不是类或命名空间名称
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(4): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(5): error C2653: “Global”: 不是类或命名空间名称
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(6): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(8): error C2653: “Hero”: 不是类或命名空间名称
1>d:\vsprojects\mtgames\mtgames\classes\game\hero.cpp(8): fatal error C1903: 无法从以前的错误中恢复;正在停止编译

    这是因为,如有2个头文件a.h和 b.h,A.h有#include "B.h",而b.h也有#include"A.h",同时B.h头文件中有a类的对象(即有A a)等,这样造成

A.h与B.h之间无限循环引用,即会导致以上的错误。解决办法也很简单,只需要在B.h头文件的类前声明一下A类即可(即class A;)。

    暂时发现这2种情况会导致,error C2143: 语法错误 : 缺少“;”(在“{”的前面),这种错误,一般情况下,第二种情况是比较常见的。

你可能感兴趣的:(error,cocos2d-x)