возвращает тип void * в c

#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, которые возвращают a void * (например, malloc() и memcpy() ). Но я не совсем уверен, что вы на самом деле хотите сделать, поэтому, возможно, стоит попытаться уточнить это (после того, как это будет перенесено в SE).

5. на самом деле дело в том, что результат dlopen хранится в типе void *, поэтому я хочу определить это только один раз в функции, а затем повторно использовать его в соответствующих местах, просто извлекая возвращаемое значение

Ответ №1:

Могу ли я объявить возвращаемый тип void * для функции c ?

Да, вы можете. Это один из способов вернуть непрозрачный указатель. Другой был бы:

 struct Foo;
Foo* bar();