Передача указателя на функцию C++ в проекте C
У меня огромный проект C. И теперь мне нужна функция C++ для заполнения некоторых переменных.
С объявлением функции как extern "C", было нетрудно вызвать функцию из C Project.
Проблема в том, что мне нужно передать указатель на функцию 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
}
}
1 ответ
Я хочу присвоить значение указателю.
В этом случае вам нужно изменить
var = 19;
в
*var = 19;
потому что, скорее всего, var = 19;
заставляет указатель указывать на область памяти, которая недоступна для вашего приложения, поэтому любая последующая отмена ссылки на этот указатель вызовет неопределенное поведение.
Кроме того, почти всегда безопасно проверить NULL
перед входящим указателем.