Привет!
Я 15 лет пишу на C++, немного знаю C#, Python и пр. Но совершенно не понимаю, как писать на C. Как организовывать обработку ошибок (исключений нет, значит остаются коды возврата или setjmp/longjmp). RAII нет, значит надо в конце функции все чистить самому. Знаю, что у MS в драйверах используется goto cleanup для этих целей. Что-то типа:
void doSomething()
{
XXX
if (XXX)
goto cleanup;
cleanup:
free(XXX);
}
Понятно, что можно использовать alloca для автоосвобождения памяти. Но не везде это подходит (стек все-таки ограничен). Далее, в C++ есть STL с кучей полезных структур данных (а есть ведь еще Boost/Poco). В чистом C ничего такого нет, т.е. надо использовать какие-то сторонние библиотеки. Какие?
Может есть какие-нибудь книги? Думаю, посмотреть что-то типа Writing device drivers for Linux.
Заранее спасибо.