Есть несколько способов сделать это.
1) Перечисления - это можно сделать следующим образом. Существует гибкость, позволяющая добавлять разные коды ошибок по мере необходимости и помещать их в группу. Скажите ошибки, связанные с аутентификацией пользователя, доступом к файлу, ошибками API и т. Д.
enum
{
ERROR_GROUP_1 =100,// This gives 99 error codes for a particular group, can be initialised to negative value too.
GROUP1_1,
.
.
ERROR_GROUP_2 = 200
GROUP2_2,
.
.
and so on
};
2) Использовать директивы препроцессора
#define ERROR_CODE_START 00000000L
#define ERROR_CODE_1 (ERROR_CODE_START + 1)
3) Отрицательные возвращаемые значения в виде int, но это будет очень мучительно, поскольку ссылка должна быть хорошо документирована для значений.
4) Вы можете создать такую структуру, как GError . Передайте ссылку на эту структуру в каждом API и заполните ее. Если значение не равно NULL, вызывающая сторона может проверить код ошибки и строку, которые будут установлены в API.