У меня есть программа на C, в которой мне нужно создать целое семейство функций, которые имеют одинаковые подписи и тела и отличаются только их типами. То, что я хотел бы сделать, это определить макрос, который генерирует для меня все эти функции, поскольку в противном случае я буду долгое время копировать и изменять исходные функции. В качестве примера, одна из функций, мне нужно генерировать выглядит так:Могут ли макросы использоваться для имитации функций шаблона C++?
int copy_key__sint_(void *key, void **args, int argc, void **out {
if ((*out = malloc(sizeof(int))) {
return 1;
}
**((_int_ **) out) = *((_int_ *) key);
return 0;
}
Идея заключается в том, что я мог бы назвать макрос, GENERATE_FUNCTIONS («ИНТ», «синт») или что-то вроде этого, и сгенерировать эту функцию. Курсивные части - это то, что необходимо подключить.
Возможно ли это?
@R .: Я не думаю, что это ответ на вопрос OP. Я понимаю тот код, который он дает как один из примеров того, какие * декларации * он хочет достичь. –
Я думаю, что мой ответ относится к большой категории ситуаций, для которых может потребоваться «C++-шаблоны для C». Часто, если вы понимаете, что можете обрабатывать данные в виде абстрактного байтового массива или частично как таковые с функцией обратного вызова для его обработки (как в 'qsort' и т. Д.), Вы можете написать гораздо более простой и эффективный код C , –
Имеет ли memcpy реализацию Windows? – sadakatsu