Возможно ли в C импортировать библиотечную функцию под другим именем?
как сказать, в идеале этот поддельный синтаксис C:
char *malloc(int) as mymalloc;
вместо malloc
, как известно в файле библиотеки, оно становится mymalloc
. И и идентификатор malloc
не объявлен и доступен для будущих объявлений.
Мне это нужно для некоторого конкретного случая использования, когда сторонний файл большого заголовка может быть дополнительно включен позже, но всегда нужно использовать несколько функций. Поэтому мне нужен еще один микро-заголовок, который определяет те же самые несколько функций, которые больший заголовок объявляет (или нет) позже. Все это является частью языка программирования, который компилируется в C, поэтому странным требованием является то, что маленький заголовок должен определять функции перед большим файлом заголовка. Также я не могу использовать некоторые тривиальные решения ifdef
, потому что большой заголовок не знает обо мне, и я не могу изменить его. Рассматриваемые функции принимают указатель сложной структуры в качестве параметра, но я просто объявляю их как говорящие void*
, поэтому компилятор будет лаять при «несовместимом переопределении».
CLUMSY_STRUCTURE *create_struct();
do_something(CLUMSY_STRUCTURE *);
и определение CLUMSY_STRUCTURE - это страницы длиной, и я не хочу, чтобы они были в моем крошечном заголовке.
Также я не уверен, что даже если я переопределю CLUMSY_STRUCTURE, будет ли компилятор считать, что два объявления совместимы, когда он видит второе объявление.