Dav*_*vid 0 c++ macros static-libraries visual-c++
该库提供了一个派生类,派生类作为模板参数.
例:
class userclass : public lib::superclass<userclass>
{}
Run Code Online (Sandbox Code Playgroud)
你可以看到很多东西要打字.并且"userclass"应该始终公开,以使其正常工作.所以我提出了两个看起来像这样的MACRO:
#define SUPER(x) public lib::superclass<x>
#define SUPERCLASS(x) class x : public lib::superclass<x>
Run Code Online (Sandbox Code Playgroud)
用户现在可以键入任何一个.
class userclass : SUPER(userclass)
{}
SUPERCLASS(userclass)
{}
Run Code Online (Sandbox Code Playgroud)
但主要问题是,MACER SUPER和SUPERCLASS存在于用户全局命名空间中,与包含的标题一样快.
可以/我应该:
我正在使用vs 11,该库是针对Windows开发人员的.
使用宏的第一条规则是"不要,如果有任何其他解决方案".在这种情况下,还有另一种解决方案,所以摆脱它们.
其次,你的宏弊大于利,因为人们不知道它们只是通过读它扩展到了什么,而完整的定义确实如此.说真的,你节省了真正微不足道的字符数,以便在可读性方面付出真正可怕的代价.它比简单地写出继承要好得多.