#c #linux #void #void-pointers #return-type
#c #linux #пустота #void-указатели #возвращаемый тип
Вопрос:
Могу ли я объявить возвращаемый тип void *
для функции c ? Я работаю в среде Linux и хочу вернуть дескриптор void *
для библиотеки в случае dlopen
для разделяемой библиотеки.
Комментарии:
1. Это вопрос программирования, больше подходящий для stackoverflow (не связанный с Linux). Но это также плохо спрошено: что именно вам нужно сделать и что у вас уже есть? Вы всегда можете привести возвращаемое значение или написать оболочку.
2. да, но я смущен тем, что я имею дело с типом void *, это не эквивалентно void . Могу ли я просто напрямую вернуть void *
3. на самом деле моя основная цель — декализировать дескриптор dlopen разделяемой библиотеки в функции и просто повторно использовать его, поэтому я хочу вернуть void * в этой функции, чтобы я мог получить результат из dlopen и просто использовать его вне
4. Да, вы можете вернуть
void *
, хотя это не очень приятно на C . Что касается C, существует множество стандартных библиотечных функций C, которые возвращают avoid *
(например,malloc()
иmemcpy()
). Но я не совсем уверен, что вы на самом деле хотите сделать, поэтому, возможно, стоит попытаться уточнить это (после того, как это будет перенесено в SE).5. на самом деле дело в том, что результат dlopen хранится в типе void *, поэтому я хочу определить это только один раз в функции, а затем повторно использовать его в соответствующих местах, просто извлекая возвращаемое значение
Ответ №1:
Могу ли я объявить возвращаемый тип void * для функции c ?
Да, вы можете. Это один из способов вернуть непрозрачный указатель. Другой был бы:
struct Foo;
Foo* bar();