Я портирую устаревшую программу на C на C ++.Тем не менее, компилятор не устраивает и требует дополнительных типов типов для C ++.Например, у меня есть эта функция ...
void foreach_element_in_patch(Patch *patch, void (*func)(),
long arg1, long process_id);
В исходном коде C она используется следующим образом ...
foreach_element_in_patch( patch, display_interactions_in_element,
mode, process_id );
Однако для C ++ мне нужно выполнить typecastвторой аргумент, который запрещает компилятору генерировать ошибку.
foreach_element_in_patch( patch, (void (*)())display_interactions_in_element,
mode, process_id );
Ошибка, сгенерированная компилятором, следующая ...
invalid conversion from ‘void (*)(Patch*, long int, long int)’ to ‘void (*)()’
Теперь есть способ задатькомпилятор не генерирует ошибки для таких вещей.Я пытался добавить к этой функции префикс extern "C"
, но компилятор C ++ все равно не рад.Мои приложения загружены с таким кодом, и у меня нет времени, чтобы настроить так много кода.