我正在尝试使用逆向工程生成类图,但是正在发生以下情况:


  在第11行上,解析C:\ Documents and Settings \ Meus documentos \ EA_Documentos \ Modelos \ Environment \ class \ Factory.h时出错。意外的符号:ISIMFactory
  您可能需要定义一个语言宏。
  
  解析C:\ Documents and Settings \ Meus documentos \ EA_Documentos \ Modelos \ Environment \ class \ Model.h在第99行时出错。意外的符号:ISIMModel
  您可能需要定义一个语言宏。


这些还有更多。

这是CSIMEnvironmentModel.h中的相应代码

class SIMMDLENVv01_EXPORT CSIMEnvironmentModel // line 99
: public ISIMModel
, public ISIMEventSource
, public ISIMScheduledModel
, public ISIMExecut
, public ISIMPublisher
{
public:

    CSIMEnvironmentModel(const std::string &a_modelType);
virtual ~CSIMEnvironmentModel(void);


CSIMEnvFactory.h

class SIMMDLENVv01_EXPORT CSIMEnvFactory // line 11
: public ISIMFactory
{
public:
    CSIMEnvFactory();
    virtual ~CSIMEnvFactory(void);
    std::vector<ISIMModel*> InstanceModel(const std::string &a_modelType, const    std::string &a_conf);
};


此错误消息的原因是什么?

最佳答案

您的代码包含使用的宏定义(SIMMDLENVv01_EXPORT),它不是EA的标准宏定义的一部分(其中很多都涵盖了ATL和MFC)。
您需要在“ Settings->Language Macros”下添加其他项(如错误消息中的提示所示)。

注意
声明MACRO()的宏以接收任意数量的参数时,请使用语法#defined

如果您想对Qt之类的框架库进行反向工程,则需要设置其中的许多功能,以便能够对工程进行反向工程而不会出错。
可能是您应该考虑采用另一种策略来在模型中引用这些类型和类。
另一个解决方法可能是仅预处理要首先导入的所有代码,然后从预处理结果中导入。

关于c++ - 企业架构师逆向工程:“意外符号”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17931668/

10-13 08:22