gpt4 book ai didi

c - "install"函数在 C 语法中意味着什么?

转载 作者:行者123 更新时间:2023-11-30 18:29:19 24 4
gpt4 key购买 nike

我试图理解 R 包 ucminf 调用的 C 代码。以下代码来自于https://cran.r-project.org/src/contrib/ucminf_1.1-4.tar.gz处的interface.c文件。 :

#include <R.h>
#include <Rinternals.h> //R internal structures
#include <R_ext/RS.h> //F77_CALL etc.

// Declare FORTRAN routine for use in C
extern void F77_NAME(ucminf)(int*, double[], double*, double[],
int*,double[],int*,int*,int*,double[],SEXP);

/*-------------------------------------------------------------------------------
Define C functions that calls user defined function in R
*/

void installPar(int nn, double x[], SEXP rho) {
int i;
SEXP PAR = findVarInFrame(rho, install(".x"));
double *xpt = REAL(PAR);
if (LENGTH(PAR) != nn)
error("Dimension mismatch, length(.x) = %d != n = $d", LENGTH(PAR), nn);
for (i = 0; i < nn; i++) xpt[i] = x[i] ;
}

rho 是在 R 中创建的环境,它包含 vector .x。我最好的猜测是 SEXP PAR = findVarInFrame(rho, install(".x")); 行将 PAR 设置为等于 .x,但是 install() 命令是做什么的呢?

这是一个如此简单的问题,令我惊讶的是我无法在网上找到答案 - 搜索“安装 c 语法”发现了很多有关如何安装编译器的信息,但我找不到有关该命令的任何信息。任何有关关键字的建议以使我的搜索更有效,我们将不胜感激。

最佳答案

我认为这段代码是 R 扩展的一部分,因此这里使用 install 是对 Writing Extension 的 R C API 的函数调用。 。其作用是在当前符号表中创建符号.x(或返回对现有.x符号的引用)。链接的文档确实表明,如果符号已经存在,则使用 install 是无害的,并且如果您确实想要执行此操作,则这是查找符号的好方法。

关于c - "install"函数在 C 语法中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194561/

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