Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 节点C++;源代码编译错误_C++_Node.js_Eclipse - Fatal编程技术网

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

C++ 节点C++;源代码编译错误,c++,node.js,eclipse,C++,Node.js,Eclipse,我正在尝试在eclipse下构建node.js。(我想使用IDE逐步了解node的内部结构,以便回答一些问题)。我得到一个编译错误,我不明白。以下是来源的2条相关行: static uint64_t counter_gc_start_time; counter_gc_start_time = NODE_COUNT_GET_GC_RAWTIME(); 我将其替换为(手动展开的)宏,因此 counter_gc_start_time = (do { } while (false)); 但我仍

我正在尝试在eclipse下构建node.js。(我想使用IDE逐步了解node的内部结构,以便回答一些问题)。我得到一个编译错误,我不明白。以下是来源的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));
我在OS/X 10.13.4下编译,使用编译器标志-std=c++11

有人能告诉我这行代码应该做什么吗

当定义了
HAVE\u PERFCTR
时,将包含
node\u win32\u PERFCTR\u provider.h
,而不是将无法编译的定义。
NODE\u COUNT\u GET\u GC\u RAWTIME()的定义正在运行


我不知道这个图书馆,它只是我通过查看文件看到的。在哪里和何时定义
HAVE_PERFCTR
超出了我搜索的范围。但是如果你的机器上有lib,答案就在那里。我必须下载它才能知道更多。正如jbp所指出的,这看起来像是某种windows操作。

为什么要“手动扩展”宏?节点计数、获取、GC、绘图时间是如何定义的?当我第一次遇到编译错误时,我用宏的定义替换了宏,以期与源代码一起玩,我现在正在用iPhone工作,我决定去喝杯啤酒。所以请原谅我没有输入扩展的宏,但是它扩展到了我上面发布的第二行源代码。也许你是在做别的事情,那是一个愚蠢的静态断言。标头中有一个条件,如果不转移到这个奇怪的define.Hi@lakeweb,它实际上编译一个函数调用。我是为MacOS/x构建的,所以我没有使用Perfectr选项。因此,它最终按照我的帖子定义了宏。对我来说,这不是编译。但显然节点确实构建了,所以我仍然感到困惑。谢谢你花时间看。嗨,@Greycon你试过制作“开箱即用”版本吗?他们说Mac是实验性的,但看起来像是。@lakewab,我明白你的意思。使用提供的节点构建工具进行构建,并查看日志。。。今晚我可能会试一试,谢谢。
#ifdef HAVE_PERFCTR
#include "node_win32_perfctr_provider.h"
#else
...
#define NODE_COUNT_GET_GC_RAWTIME() do { } while (false)
#endif