Есть функция, которая аллоцирует память под объект, создает его и возвращает, а в случае ошибки возвращает NULL. А как бы вы вернули код ошибки, чтобы понять, где именно она произошла?
Так вроде лишний аргумент: void *create_object (..., int *error);
А можно ли (считается ли хорошим тоном) использовать errno со своими кодами ошибок?