我在做一个文本解析器(将类自然语言解吸为程序代码),想利用映射宏来实现。(模仿消息映射宏)
宏定义如下:
#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!