Разрешение перегрузки с внешней связью «C»

В смешанном проекте C / C ++ нам нужно выполнить вызов из C в функция C ++. Вызываемая функция перегружена как три отдельные функции, но мы можем игнорировать это со стороны C, мы просто выбираем наиболее подходящую и придерживаемся этой.

Вот ' s два способа сделать это: (1) написать небольшую оболочку C ++ с внешней функцией "C", которая перенаправляет вызов выбранной перегруженной функции, или (2) хакерский способ просто объявить одну функцию, из которой мы хотим вызвать C как extern "C".

Вопрос в том, есть ли недостатки (кроме кошмаров и плохой кармы) у второго варианта? Другими словами, с учетом трех перегруженных функций, одна из которых объявлена ​​как exern «C», следует ли ожидать проблем со стороной C ++, или это хорошо определено в соответствии со стандартом?

11
задан Justin Johnson 1 February 2011 в 18:10
поделиться