Для моего класса системного программирования мы делаем много программирования в C и обязаны проверять ошибки большинства функций, поскольку в настоящее время мы учимся программировать с помощью pthreads.C Функция проверки ошибок
Причина, по которой я говорю, что это не настоящая домашняя работа, заключается в том, что она намного выше и выше ожидаемой для этого класса. Просто проверка каждой функции по отдельности более чем удовлетворительная. Я просто считаю, что это трудоемкий и грязный метод и надежду на более аккуратное решение.
Мне было интересно, может ли кто-нибудь показать мне, как написать функцию, которая принимает любую функцию C Функция в качестве параметра, за которой следуют все необходимые параметры для этой функции, а также требуемое возвращаемое значение (в этом случае правильное один) и выполняет следующее.
if(function_name(param1, param2, ...) != desired_return_value) {
fprintf(stderr, "program_name: function_name() failed\n");
perror("function_name(): ");
}
Возможно ли это? Это вряд ли требуется по нашему курсу, но это просто раздражает меня, что практически любая функция, которую я пишу, должна содержать 4 строки кода, чтобы проверить это. Это очень тяжело читать.
Даже некоторые другие предложения были бы хорошими. Я просто пытаюсь повысить удобочитаемость, поэтому, если это полностью неправильное направление, было бы высоко оценено правильное направление.
EDIT: Это должно составить по стандарту gnu99 идеала: P
EDIT 2: В ответ на Джеймс McNellis: Ошибки из наших функций нет (я считаю, в данном случае), необходимость для обработки. Уведомление должно быть предоставлено. Мы ничем не занимались обработкой ошибок, связанных с потоком/процессом (который является предметом обсуждения в двух словах).
Ну, это не настоящая домашняя работа, но я не скажу, что вы не сказали, что это не так. – Alex
Это не дроиды, которых ты не ищешь. – detly
По моему опыту, во многих случаях, но особенно в коде потоков, а не при обработке ошибок, это верный путь к раннему облысению, головным болям и многим часам поздней ночной отладки. Проблема заключается в высокой вероятности длительного времени задержки между написанием кода, который нарушает какое-либо предположение, и кодом, который зависит от него. – RBerteig