I just found a potential bug:
Here, in cbplugin.h, there are code like:
// Define basic groups for plugins' configuration.
static const int cgCompiler = 0x01; ///< Compiler related.
static const int cgDebugger = 0x02; ///< Debugger related.
static const int cgEditor = 0x04; ///< Editor related.
static const int cgCorePlugin = 0x08; ///< One of the core plugins.
static const int cgContribPlugin = 0x10; ///< One of the contrib plugins (or any third-party plugin for that matter).
static const int cgUnknown = 0x20; ///< Unknown. This will be probably grouped with cgContribPlugin.
This will let all the translation unit which include the "cbplugin.h" have a own copy of those variables. Is that a bug?
Why not just use extern modifier, and define them in the cpp files???
Or just use enum?