gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:26:36 25 4
gpt4 key购买 nike

我正在阅读 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com