Я нашел следующую функцию в коде драйвера устройства.Какова цель следующей функции?
static void module_exit(void)
{
do { } while (0);
}
мой вопрос, почему они использовали do { } while (0);
внутри этой функции. Они могут просто вернуться оттуда вместо того, чтобы называть это do { } while (0);
. Есть ли какая-то особая причина для того, чтобы иметь do { } while (0);
?
Похоже на «остаточный мусор». Цикл (пустой) немедленно прекращается при первой проверке состояния, если он полностью не оптимизирован. Теперь, если в цикле (и, возможно, за его пределами) есть * фактический * код, он может использовать 'break' или' continue' как форму управления потоком. – user2864740
look http://stackoverflow.com/questions/ 3766827/how-do-while-while0-work-in-macro –
Оптимизирующий компилятор может даже оптимизировать весь цикл. –