В надстройке в Excel, написанной на C (++), как получить имя функции, вызвавшей надстройку?

Название говорит само за себя. У меня есть надстройка для Excel, написанная на
C ++, и я хотел бы зарегистрировать несколько различных функций в
Excel, чтобы называть то же самое extern "C" функция в моем C ++,
диспетчеризация по функции, вызываемой в Excel. Но чтобы сделать это,
Мне нужно быть в состоянии определить, какая функция Excel вызвал его.

РЕДАКТИРОВАТЬ:

Поскольку это не кажется ясным: у нас есть большая библиотека плагинов для
Excel, написанный на C ++. Мы расширяем его, и один из
вещи, которые мы хотим сделать, позволяют этой библиотеке поддерживать плагины
Сам, возможно, написано на других языках. (Мы используем Python
например, для вещей более высокого уровня.) Когда я загружаю один из
эти плагины, я получаю указатель к функциям, которые мне нужны
зарегистрироваться, вместе с информацией об их аргументах, вернуть
значения и т. д. Мне нужен какой-то способ регистрации этих функций
с Excel, так что пользователь Excel может получить к ним доступ. Мой основной
думал, что у меня будет одна функция в моей библиотеке,
который будет перенаправлять на нужную функцию (как правило, Python
функция, поэтому я бы маршалл аргументы Excel в Python
список, вызовите функцию Python, используя PyObject_CallObject, а также
затем маршалл возвращаемые значения обратно в xloper12 а также
верните его в Excel. При регистрации функций
pxProcedure Строка всегда будет именем моего сортировки
функция. pxTypeText и pxFunctionText было бы
разные каждый раз. Что мне нужно сделать, это как-то получить
pxFunctionText что привело к вызову Excel в мою функцию, так
Я могу сопоставить его со списком аргументов (чтобы узнать, какие типы мои фактические
аргументы есть) и адрес функции, которую я на самом деле
должен позвонить ( PyObject*в случае с Python).

На данный момент, предложение Grady Player о единственном
вещь, которая приходит на ум; это фактически решило бы две проблемы
сразу, так как это даст мне названный первый аргумент для
va_args часть также. Но это вызывает больше вопросов, чем это
ответы: как определить макрос из кода C ++, например?
Я не могу найти любую комбинацию доступных функций в родной
C ++
это позволило бы это.

1

Решение

Задача ещё не решена.

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


По вопросам рекламы [email protected]