【发布时间】:2020-06-04 15:46:47
【问题描述】:
我试图弄清楚我遇到的这段代码是做什么的,但似乎不太明白它是如何工作的。
#define CODEC_BIND(classname, type) codec_creator cc_##classname##_##type ((type), new classname());
codec_creator 是一个类,它将特定编解码器分配给构造函数中的无序映射,如下所示。
extern std::unordered_map <unsigned short, std::shared_ptr<codec>> g_creator_map;
class codec_creator
{
public:
codec_creator(unsigned short pt, codec* c)
{
g_creator_map[pt] = std::shared_ptr<codec>(c);
}
};
在我看来,CODEC_BIND 用于通过调用 codec_creator 中不同编解码器类的构造函数来将不同类型的编解码器添加到无序映射中。我不确定这是否是它唯一能做的事情。它还有其他用途吗?
【问题讨论】:
-
标题与你最后的问题不符,真正的问题是什么?代码不完整,因此即使尝试回答您的问题也几乎是不可能的。我们如何提出建议?听起来您了解 define 指令的作用,那么您在寻找什么?
标签: c++ preprocessor codec