在 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.
此外,在直接取消引用之前检查传入指针的 NULL
ity 几乎总是安全的。
我有一个巨大的 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.
此外,在直接取消引用之前检查传入指针的 NULL
ity 几乎总是安全的。