2

我有一个巨大的 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 started\n"); //works
        var = 19; //doesn't work
        //insert some c++ code here
    }
}
4

1 回答 1

4

我想给指针赋值。

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

 var = 19;

 *var = 19;

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

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

于 2016-03-03T15:03:27.387 回答