На данный момент я изучаю программирование на С, и я видел этот пост.
Рекомендации по именованию C для перечисления кодов ошибок
Я пытался закодировать следующее, но я не знаю, как получить доступ к структуре через код ошибки, который я указал. Ниже мой код, пожалуйста, игнорируйте неиспользуемые переменные. Пожалуйста, помогите мне спасибо.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* ASCII Value Definitions */
#define ASCII_NULL 0x00
#define ASCII_HT 0x09
#define ASCII_NL 0x0A
#define ASCII_CR 0x0D
#define ASCII_SP 0x20
#define ASCII_HASHTAG 0x23
#define COLOR_COMPONENTS 3
enum _error_definition {
E_SUCCESS = 0,
E_INPUT_FILE_ERROR = -1,
E_OUTPUT_FILE_ERROR = -2,
E_INVALID_FORMAT = -3,
E_INVALID_DIMENSIONS = -4,
E_ALLOCATION_ERROR = -5,
E_FILE_READ_ERROR = -6,
E_FILE_WRITE_ERROR = -7
};
/* type to provide in your API */
typedef _error_definition error_t;
struct _errordesc {
int code;
char *message;
} errordesc[] = {
{E_SUCCESS, "No Error\n"},
{E_INPUT_FILE_ERROR, "Error: Invalid input file\n"},
{E_OUTPUT_FILE_ERROR, "Error: Invalid output file\n"},
{E_INVALID_FORMAT, "Error: Invalid file format\n"},
{E_INVALID_DIMENSIONS, "Error: Invalid dimensions\n"},
{E_ALLOCATION_ERROR, "Error in allocating image buffer\n"},
{E_FILE_READ_ERROR, "Error in reading the image data\n"},
{E_FILE_WRITE_ERROR, "Error in writing to file\n"}
};
void cleanUpBeforeExit(FILE *inputFile, FILE *outputFile, char *fileBuf, int error)
{
printf(errordesc[error].message);
if(inputFile) fclose(inputFile);
if(outputFile) fclose(outputFile);
if(fileBuf) free(fileBuf);
//exit(errordesc[error].code);
}
int main(int argc, char *argv[])
{
FILE *infp = ASCII_NULL;
FILE *outfp = ASCII_NULL;
char outfname[256];
int err;
int datasize;
int num;
int x;
int y;
char *datap = ASCII_NULL;
unsigned char pixel[3]; // R, G, B
int para[3];
unsigned char *p;
char magic[10];
cleanUpBeforeExit(infp, outfp, datap, E_OUTPUT_FILE_ERROR);
getchar();
}