Latest web development tutorials

C typedef

lenguaje C proporciona unas palabras clavetypedef, puede utilizarlo para tomar un nuevo nombre para el tipo.El ejemplo siguiente define unaBYTE plazo es un único número de bytes:

typedef unsigned char BYTE;

Después de esta definición de tipo, que puede ser utilizado como un identificador bytesin signo tipo charabreviatura, tales como:

BYTE  b1, b2;

Por convención, la definición se capitalizará las letras con el fin de alertar al usuario que escriba un nombre simbólico es una abreviatura, pero también se puede utilizar letras minúsculas, de la siguiente manera:

typedef unsigned char byte;

También puede utilizartypedef a los tipos de datos personalizados para tomar un nuevo nombre para el usuario.Por ejemplo, se puede utilizar la estructura typedef para definir un nuevo tipo de datos, y luego usar este nuevo tipo de datos para definir la estructura de las variables directas, de la siguiente manera:

#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, "C Programming");
   strcpy( book.author, "Nuha Ali"); 
   strcpy( book.subject, "C Programming Tutorial");
   book.book_id = 6495407;
 
   printf( "Book title : %s\n", book.title);
   printf( "Book author : %s\n", book.author);
   printf( "Book subject : %s\n", book.subject);
   printf( "Book book_id : %d\n", book.book_id);

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Book  title : C Programming
Book  author : Nuha Ali
Book  subject : C Programming Tutorial
Book  book_id : 6495407

typedef vs #define

Directiva C#define se usa para definir un alias para una variedad de tipos de datos y typedefsimilares, pero tienen las siguientes diferencias:

  • typedef sólo nombres simbólicos para typedefs,#define pueden no sólo definir el tipo de alias, sino también definir un alias para el valor, por ejemplo, se puede definir 1 UNO.
  • typedef se lleva a cabo por el compilador interpretado,#define se lleva a cabo por el pre-procesado por el compilador.

Aquí es el uso más simple de #define:

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

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Value of TRUE : 1
Value of FALSE : 0