C typedef

El lenguaje C proporcionatypedefla palabra clave, que puede usar para dar un nuevo nombre a un tipo. El siguiente ejemplo define un término para un número de un solo byte:BYTE:

typedef unsigned char BYTE;

Después de esta definición de tipo, el identificador BYTE puede usarse como la abreviaturaunsigned chardel tipo, por ejemplo:

BYTE  b1, b2;

Por convención, al definir se usan mayúsculas para recordar al usuario que el nombre del tipo es una abreviatura simbólica, pero también puede usar minúsculas, como se muestra a continuación:

typedef unsigned char byte;

También puede usartypedefpara dar un nuevo nombre a los tipos de datos definidos por el usuario. Por ejemplo, puede usar typedef con una estructura para definir un nuevo nombre de tipo de datos y luego usar este nuevo tipo de datos para definir directamente variables de estructura, como se muestra a continuación:

Ejemplo

#include <stdio.h> #include <string.h> typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; } Book; int main( ) { Book book; strcpy( book.title, "Tutorial de C"); strcpy( book.author, "Ejemplo"); strcpy( book.subject, "Lenguaje de programación"); book.book_id = 12345; printf( "Título del libro : %s\n", book.title); printf( "Autor del libro : %s\n", book.author); printf( "Categoría del libro : %s\n", book.subject); printf( "ID del libro : %d\n", book.book_id); return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

书标题 : C 教程
书作者 : Ejemplo
书类目 : 编程语言
书 ID : 12345

typedef vs #define

#definees una directiva de C que se usa para definir alias para varios tipos de datos, de manera similar atypedef#define, pero tienen las siguientes diferencias:

  • typedefSe limita a definir nombres simbólicos para tipos,#defineno solo puede definir alias para tipos, sino también para valores; por ejemplo, puede definir 1 como ONE.
  • typedefes interpretado por el compilador,#definela declaración es procesada por el preprocesador.

A continuación se muestra el uso más simple de #define:

Ejemplo

#include <stdio.h> #define TRUE 1 #define FALSE 0 int main( ) { printf( "Valor de TRUE: %d\n", TRUE); printf( "Valor de FALSE: %d\n", FALSE); return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

TRUE 的值: 1
FALSE 的值: 0
Otras extensiones