Я бы использовал первое, так как void*
может указывать на что угодно.Похоже, в вашем случае нет необходимости в двойном косвенном указании.
Следует также иметь в виду, что есть и другой способ, который предполагает наличие полезной нагрузки переменного размера внутри структуры, а не фиксированнойvoid*
.Это полезно в случае, когда сами структуры размещены (например, в связанном списке), так что вы можете сделать их переменным размером, настроив аргумент на malloc
.
В этом случае вы можете избежать указателейструктура в целом.См. этот ответ для более подробной информации.Я не предполагаю, что это необходимо (или даже хорошая идея) для этого конкретного случая, просто предоставляя это как другую возможность.Я подозреваю, что ваш вариант 1 будет более чем достаточным, или предоставит объединение в структуре, если вы не хотите указатель там.