传递指向 C 项目中C++函数的指针

Passing a pointer to a C++ function in a C Project

本文关键字:C++ 函数 指针 项目      更新时间:2023-10-16

我有一个巨大的C项目。现在我需要一个C++函数来填充一些变量。

将函数声明为 extern "C",从 C 项目调用函数是没有问题的。

问题是,我需要传递一个指向C++函数的指针,并且在函数中,我想为指针分配一个值。但就在此时,程序因"分段错误"而崩溃。

有没有办法做到这一点?还是不可能在 C 和 C++ 之间以这种方式使用指针?


在 C 中将函数作为线程调用:

 Restwo = pthread_create(&num, NULL, (void *) function, &var);

页眉

 #ifdef __cplusplus
extern "C"
{  // Dies sorgt dafür, dass der Header sowohl in C als auch in C++ funktioniert
#endif
    int function(int *pITS);
#ifdef __cplusplus
}
#endif

C++功能

extern "C" {
    int getNewLsaSignals(int *var) {
        printf("Successfully startedn"); //works
        var = 19; //doesn't work
        //insert some c++ code here
    }
}

我想为指针赋值。

在这种情况下,您需要更改

 var = 19;

 *var = 19;

因为var = 19;最有可能使指针指向应用程序无法访问的内存位置,因此该指针的任何后续取消引用都将调用未定义的行为。

此外,在直接取消引用传入指针之前,检查传入指针的NULL性几乎总是安全的。