r - 我在哪里可以找到 Rf_protect() 在 R 的源代码中的定义?

标签 r

我正在阅读 R 源代码并试图了解堆结构。我正在寻找 PROTECT() 的定义,但我已经建立了:

$ grep -rn "#define PROTECT(" *
src/include/Rinternals.h:642:#define PROTECT(s) Rf_protect(s)

进而
$ grep -rn "Rf_protect(" *
src/include/Rinternals.h:803:SEXP Rf_protect(SEXP);
src/include/Rinternals.h:1267:SEXP Rf_protect(SEXP);

但是我没有找到 Rf_protect() 的定义。

谢谢。

最佳答案

Rf_ prefix 是一个常见的习惯用法,它使这个普通的 C 代码与命名空间相似。所以你要找protect(...)反而:

/usr/share/R/include/Rinternals.h:#define protect               Rf_protect

考虑到它的“核心”程度,您不妨从 src/main 开始哪里快grep -c带您到 src/main/memory.c .等等 on lines 3075 to 3081
SEXP protect(SEXP s)
{
    if (R_PPStackTop >= R_PPStackSize)
    R_signal_protect_error();
    R_PPStack[R_PPStackTop++] = CHK(s);
    return s;
}

话虽如此,您可能想要关注文件的大部分内容,而不仅仅是这个函数。

关于r - 我在哪里可以找到 Rf_protect() 在 R 的源代码中的定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569730/

相关文章:

c# - 使用 R.Net 从 R 评估中检索结果

r - Stargazer 和 gam - 如何包含整个摘要输出?

r - 关于使用 rvest 和 purrr 抓取带有嵌套链接的多个页面的问题

r - 捕获函数中输入值的名称

r - 附加到公式的正确方法,其中公式和要附加的内容都是参数

r - 从正弦噪声预测值

r - 具有 Wilcoxon 显着性水平和方面的箱线图仅显示与星号的显着比较

r - 如何将字符串连接到可能的空字符向量的每个元素?

r - 将 NAD83 状态平面坐标转换为 WS84 标准经度/纬度(以度为单位)

r - R中条形图数组中的恒定条形宽度