包括标题会导致解析问题

时间:2014-04-01 08:08:14

标签: c++ boost cocos2d-x objective-c++

我为C ++编写了一个Objective-C Wrapper,所以在主文件中,我只需要使用C ++ Code。在一个测试项目中它完美地运行,所以我想在一个相当大的游戏中实现。问题是,我只用了

之后
#include "ViewWrapper.hpp"

在我的基节点类中(来自Cocos2d-x的CCNode.h)我在另一个文件中获得了大量的Parse,Semantic和Leixcal或Prepocessor问题(named_params.hpp来自" Boost" )没有真正使用它,只写包含。如果我删除它,一切正常。有谁知道这可能是什么原因?

(在我的测试项目中,我也将其包含在CCNode中,没有问题。)

修改:代码ViewWrapper.hpp

#ifndef __Cocos__ViewWrapper__
#define __Cocos__ViewWrapper__

#include <CoreGraphics/CGGeometry.h>
#include <CoreGraphics/CGColor.h>

class ViewWrapper
{
public:
    const char* accessibilityLabel();
    void setAccessibilityLabel(const char* accessibilityLabel);

    CGRect accessibilityFrame();
    void setAccessibilityFrame(CGRect accessibilityFrame);

    CGRect frame();
    void setFrame(CGRect frame);

    CGColorRef backgroundColor();
    void setBackgroundColor(CGFloat r, CGFloat g, CGFloat b, CGFloat a);

    ViewWrapper (CGRect frame);
    ViewWrapper (void);
    ~ViewWrapper (void);
private:
    struct Impl;
    Impl* impl;
};
#endif /* defined(__Cocos__ViewWrapper__) */

希望有所帮助。

错误在struct nil {...}。也许它有一些nil的问题,因为Objective-C使用nil而我的Wrapper包含了Objective-C代码?但我的标题是.hpp文件......

答案(无法正确回答,因为它处于暂停状态): 我删除了两个包含

#include <CoreGraphics/CGGeometry.h>
#include <CoreGraphics/CGColor.h>

并使用cocos标头,如CCGeometry.hccTypes.h,因此标头没有Objective-C代码,编译器也不会与nil的boost版本混淆。

2 个答案:

答案 0 :(得分:1)

我的钱在一个类,枚举,枚举类或结构声明后缺少;

struct AprilFool
{

}

// IMPAHTANT:
;
// END IMPAHTANT

答案 1 :(得分:0)

该文件包含哪些文件扩展名?所有错误都来自?

就编译器而言,标题不存在。他们只编译源文件。任何已编译的头文件都会被有效地复制到源文件&#34;中,就在include语句所在的位置。

因此,如果您从.m文件中包含此文件,则会将其编译为.m(Objective-C)。无论头部是否有后缀&#34; .hpp&#34;。 (如果你想了解更多相关内容,请查阅&#34;编辑单元&#34;在一本关于C的好书中,或听听NSBrief第113集,在那里我被要求解释所有事情Objective-C ++:{{3 }})。

它还有助于了解您拥有的内容。这个标题的包含是第一个吗?持续?下一个包含错误的那个包括在它之后吗?文件中是否包含此代码?如果你把它作为最后一个包含它,它是否有效,或者只是在包含后的下一行错误?在一个标题的末尾做出的错误,毕竟&#34;溢出&#34;进入下一行,是由include语句或同一标题复制粘贴的那一行。