Возможно, я не правильно понимаю ваш вопрос, но инициализация по умолчанию делает именно то, что вы хотите:
int main(void)
{
struct mac_filter test = { 0 };
}
По умолчанию эта инициализация рекурсивно устанавливает все поля в «правильную» форму 0
.В большинстве случаев это эквивалентно memset
, но вы никогда не знаете, что ваша целевая архитектура имеет в качестве специальностей.
И если вы хотите присвоить этой части (это нечто иное, чем инициализация), вы можете использовать "составной литерал "от C99:
test.mac = (const packet_filter){ 0 };
Кстати, код, который вы разместили, является полностью поддельным.Тип вашей декларации неверен, а ваше определение main
смешно.Пожалуйста, отправьте код, который является максимально правильным, чтобы мы могли сконцентрироваться на реальной проблеме для вопроса.