【发布时间】:2009-06-23 20:29:12
【问题描述】:
我最近获得了一些想要移植到 Linux 的代码。不过,在头文件中,我有一些奇怪的代码,希望有人能解释一下。在头文件中,在定义其他类的命名空间中,我有以下内容:
#define CREATE_SINGLETON_METHODS(s) \
private: \
friend class Singleton<c>; \
##c(); \
virtual ~##c();
我知道##是token粘贴操作,但我不明白为什么原作者(我不认识,联系不上)使用它。我有一个如下所示的实现类:
class MapManager : public Singleton<MapManager> {
CREATE_SINGLETON_METHODS(MapManager)
private:
...
编译时出现以下错误:
error: pasting ";" and "MapManager" does not give a valid preprocessing token
这会在 Windows 和一些早期版本的 gcc(4.x 之前)上编译 find。关于这里可能发生什么的任何想法?谢谢!
【问题讨论】:
标签: c++