我在哪里可以找到这两个函数的定义。搜索他们的名字只会带来声明,但我在源代码中找不到它们的实现。
最佳答案
大概您正在寻找 C 代码函数定义。在查找定义时,我通常会在所有文件中搜索函数名称,但不带 Rf_
但带有返回类型。例如,对于 Rf_error
,我会搜索 void error
。在这种情况下,您很快就会得到(来自 src/main/errors.c@758,对于 R 版本 3.2.2):
void error(const char *format, ...)
{
char buf[BUFSIZE];
RCNTXT *c = R_GlobalContext;
va_list(ap);
va_start(ap, format);
Rvsnprintf(buf, min(BUFSIZE, R_WarnLength), format, ap);
va_end(ap);
/* This can be called before R_GlobalContext is defined, so... */
/* If profiling is on, this can be a CTXT_BUILTIN */
if (c && (c->callflag & CTXT_BUILTIN)) c = c->nextcontext;
errorcall(c ? c->call : R_NilValue, "%s", buf);
}
Rf_warning
在同一文件的第 262 行定义。
关于Rf_error 和 Rf_warning 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861905/