Usar typedef enum en C
-
Usar
enum
para definir constantes enteras con nombre en C -
Usar
typedef enum
para definir el tipo de cliente para un objeto que contiene constantes enteras con nombre
Este artículo demostrará múltiples métodos sobre cómo usar typedef enum
en C.
Usar enum
para definir constantes enteras con nombre en C
La palabra clave enum
define un tipo especial llamado enumeración. Las enumeraciones son básicamente valores integrales que tienen nombres como variables pero son objetos de sólo lectura y no pueden ser modificados en tiempo de ejecución.
Hay dos formas de construir un objeto enum
; una es declarar cada miembro sin asignarle un valor explícito pero deduciendo automáticamente los valores en función de la posición; la otra es declarar los miembros y asignar los valores explícitos.
En el siguiente ejemplo, asignamos valores personalizados a cada uno de ellos y nombramos el objeto - STATE
. A continuación, podemos utilizar los nombres de los miembros del objeto STATE
en el código como enteros con signo y evaluarlos en expresiones. El siguiente código de ejemplo demuestra las múltiples sentencias condicionales que comprueban si el entero de entrada es igual a la constante definida e imprimen la correspondiente cadena de caracteres adecuada una vez que coincide.
#include <stdio.h>
#include <stdlib.h>
enum STATE { RUNNING = 49, STOPPED = 50, FAILED = 51, HIBERNATING = 52 };
int main(void) {
int input1;
printf("Please provide integer in range [1-4]: ");
input1 = getchar();
if (input1 == STOPPED) {
printf("Machine is stopped\n");
} else if (input1 == RUNNING) {
printf("Machine is running\n");
} else if (input1 == FAILED) {
printf("Machine is in failed state\n");
} else if (input1 == HIBERNATING) {
printf("Machine is hibernated\n");
}
exit(EXIT_SUCCESS);
}
Producción :
Please provide integer in range [1-4]: 2
Machine is stopped
Usar typedef enum
para definir el tipo de cliente para un objeto que contiene constantes enteras con nombre
La palabra clave typedef
se utiliza para nombrar objetos definidos por el usuario. Las estructuras a menudo tienen que ser declaradas varias veces en el código. Sin definirlas usando typedef
cada declaración tendría que empezar con la palabra clave struct
/enum
, lo que hace que el código esté bastante sobrecargado para la legibilidad.
Tenga en cuenta, sin embargo, que typedef
simplemente crea un nuevo nombre de alias para el tipo dado en lugar de crear un nuevo tipo. Muchos tipos enteros como size_t
, uint
y otros son simplemente typedef
de otros tipos incorporados. Por lo tanto, el usuario puede declarar múltiples nombres de alias para tipos incorporados y luego encadenar declaraciones adicionales de typedef
utilizando los alias ya creados.
#include <stdio.h>
#include <stdlib.h>
typedef enum {
RUNNING = 49,
STOPPED = 50,
FAILED = 51,
HIBERNATING = 52
} MACHINE_STATE;
int main(void) {
int input1;
MACHINE_STATE state;
printf("Please provide integer in range [1-4]: ");
input1 = getchar();
state = input1;
switch (state) {
case RUNNING:
printf("Machine is running\n");
break;
case STOPPED:
printf("Machine is stopped\n");
break;
case FAILED:
printf("Machine is in failed state\n");
break;
case HIBERNATING:
printf("Machine is hibernated\n");
break;
default:
break;
}
exit(EXIT_SUCCESS);
}
Producción :
Please provide integer in range [1-4]: 2
Machine is stopped
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook