我在做一个文本解析器(将类自然语言解吸为程序代码),想利用映射宏来实现。(模仿消息映射宏)
宏定义如下:
#define ON_KEYWORD 1 //关键字
#define ON_FUNCTION 2 //函数struct AFX_SCRIPTMAP_ENTRY
{
long lItemType;
LPCTSTR lpszName;
LPCTSTR lpszMember;
LPCTSTR lpszParams;
LPCTSTR lpszReturn;
};struct AFX_SCRIPTMAP
{
AFX_SCRIPTMAP_ENTRY* lpEntries;
};#define DECLARE_SCRIPT_MAP() \
static AFX_SCRIPTMAP_ENTRY _scriptEntries[]; \
static AFX_SCRIPTMAP scriptMap; \
virtual AFX_SCRIPTMAP* GetScriptMap() const;#define BEGIN_SCRIPT_MAP(theClass) \
AFX_SCRIPTMAP* theClass::GetScriptMap() const \
{return &theClass::scriptMap;} \
AFX_SCRIPTMAP theClass::scriptMap = \
{(AFX_SCRIPTMAP_ENTRY*)&(theClass::_scriptEntries)}; \
AFX_SCRIPTMAP_ENTRY theClass::_scriptEntries{} = \
{#define SCRIPT_KEYWORD(lpszName, lpszMember) \
{ON_KEYWORD, lpszName, lpszMember, "", ""}, #define SCRIPT_FUNCTION(lpszName, lpszMember, lpszReturn, lpszParams) \
{ON_FUNCTION, lpszName, lpszMember, lpszParams, lpszReturn}, #define END_SCRIPT_MAP() \
{0, "", "", "", ""} \
};在类的实现文件中:
BEGIN_SCRIPT_MAP(CScriptAnalyzer)
//关键字映射项
SCRIPT_KEYWORD("", "")
//函数映射项
SCRIPT_FUNCTION("", "", "", "")
END_SCRIPT_MAP()编译的时候都通不过!而且叫我向微软寻求技术支持。太夸张了吧?
等候高手!!!Thanks!
宏定义如下:
#define ON_KEYWORD 1 //关键字
#define ON_FUNCTION 2 //函数struct AFX_SCRIPTMAP_ENTRY
{
long lItemType;
LPCTSTR lpszName;
LPCTSTR lpszMember;
LPCTSTR lpszParams;
LPCTSTR lpszReturn;
};struct AFX_SCRIPTMAP
{
AFX_SCRIPTMAP_ENTRY* lpEntries;
};#define DECLARE_SCRIPT_MAP() \
static AFX_SCRIPTMAP_ENTRY _scriptEntries[]; \
static AFX_SCRIPTMAP scriptMap; \
virtual AFX_SCRIPTMAP* GetScriptMap() const;#define BEGIN_SCRIPT_MAP(theClass) \
AFX_SCRIPTMAP* theClass::GetScriptMap() const \
{return &theClass::scriptMap;} \
AFX_SCRIPTMAP theClass::scriptMap = \
{(AFX_SCRIPTMAP_ENTRY*)&(theClass::_scriptEntries)}; \
AFX_SCRIPTMAP_ENTRY theClass::_scriptEntries{} = \
{#define SCRIPT_KEYWORD(lpszName, lpszMember) \
{ON_KEYWORD, lpszName, lpszMember, "", ""}, #define SCRIPT_FUNCTION(lpszName, lpszMember, lpszReturn, lpszParams) \
{ON_FUNCTION, lpszName, lpszMember, lpszParams, lpszReturn}, #define END_SCRIPT_MAP() \
{0, "", "", "", ""} \
};在类的实现文件中:
BEGIN_SCRIPT_MAP(CScriptAnalyzer)
//关键字映射项
SCRIPT_KEYWORD("", "")
//函数映射项
SCRIPT_FUNCTION("", "", "", "")
END_SCRIPT_MAP()编译的时候都通不过!而且叫我向微软寻求技术支持。太夸张了吧?
等候高手!!!Thanks!
CScriptAnalyzer
{
......
DECLARE_SCRIPT_MAP()
};
这两个宏你怎么用的?
具体的错误信息是什么?