私はカフェのソースコードを読んでいました。tools/caffe のソースである caffe.cpp で、私を困惑させる次のコードに遭遇します。
#define RegisterBrewFunction(func) \
namespace { \
class __Registerer_##func { \
public: /* NOLINT */ \
__Registerer_##func() { \
g_brew_map[#func] = &func; \
} \
}; \
__Registerer_##func g_registerer_##func; \
}
私の知る限りでは、このマクロは RegisterBrewFunction(func) を無名クラスに置き換え、<#func, &func> を g_brew_map に追加するだけです。では、なぜこれをこのようにしないのですか?
#define RegisterBrewFunction(func) g_brew_map[#func]=&func;
誰かがこれについて私を助けてくれることを願っています。