节点C++源代码编译错误

Node C++ Source Code compile error

本文关键字:错误 编译 源代码 C++ 节点      更新时间:2023-10-16

我正在尝试在日食下构建节点.js。(我想使用 IDE 逐步完成节点的内部,所以我可以回答一些问题(。我收到一个我不明白的编译错误。以下是来自源头的 2 条相关行:

static uint64_t counter_gc_start_time;
counter_gc_start_time = NODE_COUNT_GET_GC_RAWTIME();

因此,我将其替换为(手动扩展的(宏;

counter_gc_start_time =   (do { } while (false));

但是我仍然收到编译错误:

/Users/concunningham/Documents/Node/node/src/node_counters.cc:81:30: error: expected expression
counter_gc_start_time =   (do { } while (false));

我正在使用编译器标志 -std=c++11 在 OS/X、10.13.4 下编译。

谁能告诉我这行代码应该做什么?

如果你看node_counters.h

#ifdef HAVE_PERFCTR
#include "node_win32_perfctr_provider.h"
#else
...
#define NODE_COUNT_GET_GC_RAWTIME() do { } while (false)
#endif

定义HAVE_PERFCTR时,将包含node_win32_perfctr_provider.h,而不是编译失败的定义。NODE_COUNT_GET_GC_RAWTIME();的定义在 node_win32_perfctr_provider.cc 中

我不知道这个库,它只是我通过查看文件看到的。HAVE_PERFCTR何时何地被定义超出了我的搜索范围。但是,如果您的机器上有库,答案就在那里。我必须下载它才能了解更多信息。正如jbp指出的那样,这看起来像是某种窗口的东西。