Есть еще одна проблема с циклом C foreach
for (auto entry : directory_object->HashBuckets) { if (entry == NULL) continue; if (success == true) break;я перепробовал много циклов foreach, но ни один из них не сработал.
я переписываю свой драйвер ядра с c++ на C
Что я уже пробовал:
#define for_each_item(item, list) \ for(T * item = list->head; item != NULL; item = item->next) for_each_item(auto entry, directory_object->HashBuckets) { }
и id не сработал мне нужна работа для каждого цикла для C не удалось найти
Richard MacCutchan
Вы не можете использовать конструкции C++ (foreach, шаблоны, константы C++ и т. д.) в коде C. Особенно в коде ядра, где правила намного строже.
Stefan_Lang
Ричард прав. Не пытайтесь имитировать C++ в C. просто перепишите его как стандарт для цикла. Кроме того, не используйте макросы - по крайней мере, сначала. Сначала убедитесь, что код работает так, как задумано, без макросов. Когда это происходит, и когда есть очень хорошая причина тоже вводить макросы, вы все равно не должны делать этого в коде ядра. Риск испортить что-то действительно плохое, не осознавая этого, просто не стоит того, что вы думаете, что получаете взамен.
Member 14130865
благодаря вам всем Ребята я посмотрел на этот массив и использовал обычный цикл for и он сработал :)