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

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

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

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

问题是,我需要将指针传递给 C++ 函数,并且在函数中,我想为指针赋值。 但就在此时,程序崩溃并显示 "Segmentation fault".

有没有办法让它工作?还是无法在 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 started\n"); //works
        var = 19; //doesn't work
        //insert some c++ code here
    }
}

i want to assign a value to the pointer.

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

 var = 19;

 *var = 19;

因为,很可能,var = 19; 使指针指向您的应用程序无法访问的内存位置,因此该指针的任何后续取消引用都将调用 undefined behavior.

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