Tag: 函数

尝试从C调用Python函数时的Segfault

所以,我想从C调用一个Python回调函数。 在某些时候,函数被发送到C并打包成这样的元组 PyObject *userData = Py_BuildValue(“Oi”,py_callback,some_number); 在那个区域的某个地方,我也做了Py_INCREF(py_callback) 。 在程序的某个稍后时间,我想调用该函数 PyObject *py_callback; int some_number; PyArg_ParseTuple((PyObject*)userData,”Oi”,&py_callback,&some_number); // returns true PyObject *py_result = PyObject_CallFunctionObjArgs(py_callback, /* … */ NULL); 并且最后一次调用会引发分段错误。 你有什么想法,为什么会做这样的事情?

`lua_load()`如何工作?

我如何将一大块Lua代码作为char加载并使用此函数运行它? 如果没有,我可以使用什么其他function以及lua_load()如何工作?

rand()在多个函数调用中是一致的

当我尝试从函数调用中生成2个随机数时,我得到重复的结果。 但是, rand()函数在循环中工作正常,或者提供它们不在函数调用之外。 我猜这是因为系统时间和程序很小。 但我不知道如何改变种子。 #include #include #include int test1(){ int randX, randY; int range = 5; srand( time(NULL) ); randX = (rand() % range) + 1; randY = (rand() % 15 ) + 1; printf(“X:%d Y:%d\n”, randX, randY); } int main(){ test1(); test1(); test1(); test1(); test1(); }

通过引用将二维数组传递给函数(C编程)

我正在学习指针,现在卡住了一个小时,用这段代码, #include int determinant(int **mat) /* int mat[3][3] works fine.. int *mat[3] doesn’t.. neither does int *mat[] */ { int det; int a=*(*(mat+0)+0); // printf(“\n%d”,a); int b=*(*(mat+0)+1); // printf(“\n%d”,b); int c=*(*(mat+0)+2); // printf(“\n%d”,c); int d=*(*(mat+1)+0); // printf(“\n%d”,d); int e=*(*(mat+1)+1); // printf(“\n%d”,e); int f=*(*(mat+1)+2); // printf(“\n%d”,f); int g=*(*(mat+2)+0); // printf(“\n%d”,g); int h=*(*(mat+2)+1); // printf(“\n%d”,h); int i=*(*(mat+2)+2); […]

从静态初始化的另一个文件中使用该函数的可能方法是什么?

我的问题很简单。 我的程序中有三个文件。其中一个文件有静态函数。我可以从另一个文件中使用该函数吗? 我知道文件本身访问的静态函数。我想知道任何可能的方式。 如果方式可用,我如何在function声明方面停止访问?

putc和ungetc有什么区别?

int ungetc(int c, FILE *fp)将字符c推回fp,并返回c或EOF以查找错误。 其中int putc(int c, FILE *fp)将字符c写入文件fp并返回写入的字符,或返回错误的EOF 。 //这些是K&R的陈述。 我发现自己很困惑,因为putc()可以在getc之后使用,并且可以作为ungetc工作。 那么具体定义ungetc()的用法是什么。

C中的静态函数

我有一个软件模块,包含* .h文件和* .c文件。 变量和函数声明位于* .h文件中,而函数定义位于* .c文件中。 模块中的两个函数是辅助函数,不能在模块外部使用。 使模块用户明白这个意图的最佳方法是什么? 我尝试将函数声明为static ,但在* .h文件中这样做会导致GCC编译器警告函数是“声明为静态但从未定义”。 即使* .c文件使用#include指令包含* .h文件,* .h和* .c文件如何被视为不同的翻译单元? 是否有解决此问题的方法,不涉及将* .c文件中的static函数的声明及其定义放在一起? 虽然这个解决方案确实有效,但它打破了我认为在头文件中保留声明和实现文件中的定义的良好做法。

为什么有必要将列数作为函数参数传递?

当我在函数的参数中传递矩阵时,使用括号,我也需要传递列数。 为什么? #include //int function(int matrix[][5]){ //Will work int function(int matrix[][]){ //Won’t work return matrix[0][0]; } int main(){ int matrix[5][5]; matrix[0][0] = 42; printf(“%d”, function(matrix)); } gcc错误: prog.c:3:18: error: array type has incomplete element type int function(int matrix[][]){ ^ prog.c: In function ‘main’: prog.c:10:5: error: type of formal parameter 1 is incomplete printf(“%d”, function(matrix)); ^ […]

为Erlang提取C函数签名

我想知道从源代码中提取c(最终是c ++)函数名,参数及其类型最合适的工具是什么。 我想使用可以尽可能自动化的工具。 我想提取签名类型,然后让另一个用Erlang编写的程序读取输出。 我的目标是使用此信息在Erlang中构建等效的C类型/签名(使用ei)。 我希望这个过程适用于任何C文件,所以我不能使用任何硬编码的东西。 我发现很多工具看起来像CLang,CScope和ANTLR等等,但我不知道它们中是否有任何工作或者有更好的方法。 谢谢。

在Python中实现函数的前向声明

是否有可能声明函数并在python中单独实现它们? 我的意思是像C: void foo(); void foo() { }