我正在为 Node.js 编写一个包含 C 库的 C++ 模块,因此我们可以使用 JavaScript 中的 C 库。C 库中的一个函数采用枚举参数,枚举值包含在相应的头文件中。我想将枚举值作为整数从 C++ 模块导出,这样 Node.js 应用程序就不必对值进行硬编码。这是基本思想:
C:
typedef enum
{
LOGLEVEL_ERROR = 0,
LOGLEVEL_WARN,
LOGLEVEL_INFO
} log_level_t;
write_to_log(log_level_t level, char* message);
C++:
Logger::Write(int level, char* message)
{
write_to_log(level, message);
}
节点.js:
// This is what I want:
logger.write(logger.ERROR, "Oh no! Something bad happened.");
如何LOGLEVEL_ERROR
从 C++ 中公开以便可以logger.ERROR
在 JS 中使用?(我什至可以logger.LOGLEVEL_ERROR
在 JS 中使用。)我发现了一个使用宏的旧 Node.js 本机模块,EXPORT_INT32
但这似乎不再存在(我使用的是 Node.js 0.8.8)。