The following 'simple' macro does not compile(ver 2.91.66). It compiles on every other compiler I have tried it on. #define DECLARE_CLASS(n) \ class MyClass##n \ { \ public: \ MyClass##n (int i); \ ~MyClass##n (void); \ private: \ char *_dum; \ }; DECLARE_CLASS(10) DECLARE_CLASS(11)