我正在尝试在这里为 R 创建一个小扩展,以便在 R 提示符上嵌入当前时间:https ://github.com/musically-ut/extPrompt
事情似乎总体上正常,但R CMD check .
提出了警告:
文件'[截断]..Rcheck/extPrompt/libs/extPrompt.so':发现对 R 的非 API 调用:'ptr_R_ReadConsole'</p>
编译后的代码不应调用 R 中的非 API 入口点。
相关文件是这样的:https ://github.com/musically-ut/extPrompt/blob/master/src/extPrompt.c ,我认为出现在第 38 行。
void extPrompt() {
// Initialize the plugin by replacing the R_ReadConsole function
old_R_ReadConsole = ptr_R_ReadConsole;
ptr_R_ReadConsole = extPrompt_ReadConsole;
// ...
}
int extPrompt_ReadConsole(const char *old_prompt, unsigned char *buf, int len,
int addtohistory) {
// ...
// Call the old function with the `new_prompt`
return (*old_R_ReadConsole)(new_prompt, buf, len, addtohistory);
}
我正在尝试进行R_ReadConsole
API 调用。但是,由于一个不同的插件(比如我的)可能已经覆盖了它,我不想直接调用R_ReadConsole
,而是之前在ptr_R_ReadConsole
.
这是对 API 的错误使用吗?