Передача указателя на функцию 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
}
}

2

Решение

Я хочу присвоить значение указателю.

В этом случае вам нужно изменить

 var = 19;

в

 *var = 19;

потому что, скорее всего, var = 19; заставляет указатель указывать на область памяти, которая недоступна для вашего приложения, поэтому любая последующая де-ссылка этого указателя будет вызывать неопределенное поведение.

Кроме того, почти всегда безопасно проверить NULLперед входящим указателем.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector