宏定义报错为哪般?
C/C++ code #include<iostream>#include<windows.h>
using
namespace std;/*仿cruntimeclass的宏定义*/
struct runtime{public: LPCSTR m_lpszclassname; static runtime* mfirstclass; runtime* m_pnextclass; runtime* m_pbaseclass; };#define DECLARE_DYNAMIC(class_name) \
public:\static runtime class##class_name;\virtual runtime* getruntimeclass(); #define _IMPLEMENT_RUNTIMECLASS(class_name,base_class_name)\runtime* class_name::getruntimeclass();\{return
&class_name::class##class_name;}\ static
char _lpszCView[] = #class_name;\ class_name::class##class_name.m_lpszclassname = _lpszCView;#define _IMPLEMENT_DYNAMIC(class_name,base_class_name)\ _IMPLEMENT_RUNTIMECLASS(class_name,base_class_name)class a{public: a(){} };class b:public a{public: DECLARE_DYNAMIC(b)};_IMPLEMENT_DYNAMIC(b,a)int main(){ return
0;}/*C:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(46) : error C2447: missing function header (old-style formal list?)C:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(46) : error C2143: syntax error : missing ';' before '.'C:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(46) : error C2501: 'classb' : missing storage-class or type specifiersC:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(46) : error C2371: 'public: static struct runtime b::classb' : redefinition; different basic types C:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(43) : see declaration of 'public: static struct runtime b::classb'C:\Program Files\Microsoft Visual Studio\MyProjects\cruntimeclas\hong.cpp(46) : error C2143: syntax error : missing ';' before '.'执行 cl.exe 时出错.*/
|