我正在尝试使用逆向工程生成类图,但是正在发生以下情况:
在第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/