2014-02-06 5 views
1

Я нашел следующую функцию в коде драйвера устройства.Какова цель следующей функции?

static void module_exit(void) 
{ 
     do { } while (0); 
} 

мой вопрос, почему они использовали do { } while (0); внутри этой функции. Они могут просто вернуться оттуда вместо того, чтобы называть это do { } while (0);. Есть ли какая-то особая причина для того, чтобы иметь do { } while (0);?

+1

Похоже на «остаточный мусор». Цикл (пустой) немедленно прекращается при первой проверке состояния, если он полностью не оптимизирован. Теперь, если в цикле (и, возможно, за его пределами) есть * фактический * код, он может использовать 'break' или' continue' как форму управления потоком. – user2864740

+0

look http://stackoverflow.com/questions/ 3766827/how-do-while-while0-work-in-macro –

+0

Оптимизирующий компилятор может даже оптимизировать весь цикл. –

ответ

0

Нет особых причин для использования, пока нормально, в модуле module_exit есть функции очистки, которые будут деинсталлировать драйверы. Сделайте, пока выходите в вашем случае. Хотя (0), как ложный случай, и немедленно выйдет из цикла.

Смежные вопросы