Maison Problème commun Quelle est la différence entre typedef et definition en langage C ?

Quelle est la différence entre typedef et definition en langage C ?

Apr 04, 2019 am 09:54 AM

La différence entre typedef et définir est la suivante : définir est un éditeur de prétraitement, et les macros définissables ont la possibilité d'être remplacées, tandis que typedef est traité par l'éditeur et suit les règles de portée, et peut être utilisé comme alias de type défini

#define est une directive C, qui est également un alias pour définir divers types de données similaires à typedef. Cependant, il existe encore des différences entre eux. Ensuite, je présenterai les différences entre eux en détail dans l'article, qui a un certain effet de référence.

Quelle est la différence entre typedef et definition en langage C ?

[Cours recommandé : Tutoriel sur le langage C]

1. préprocesseur Géré par le processeur, il copie et colle la valeur #define du point de définition au point d'utilisation. Le typedef est géré par le compilateur et constitue la définition réelle du nouveau type. Au moment où le contrôle atteint le compilateur, tous les #defines auront été remplacés.

L'impact des différences

(1) typedef doit se terminer par un point-virgule mais #define ne doit pas se terminer par un point-virgule
( 2) Il peut y avoir des effets secondaires de substitution dans #define, par exemple :

Le problème dans la deuxième déclaration est que le préprocesseur la remplacera par

   typedef char * string_t;         
   #define string_d char *        
   string_t s1,s2; // s1和s2都是char *类型        
   string_d s3,s4; // s3是char *但是s4的类型是char(而不是char *)
Copier après la connexion
ce qui signifie s3 est de type char*, mais s4 sera de type char. Si vous souhaitez que toutes les variables soient des types pointeurs, toutes les variables doivent spécifier *

(3) typedef suit les règles de portée. Autrement dit, si un nouveau type est défini dans une portée (au sein d'une fonction), le nom du nouveau type sera affiché uniquement si la portée existe. Mais lorsque le préprocesseur rencontre un #define, il remplace toutes les occurrences (aucune règle de portée par la suite). Par exemple :
char * s3,s4;
Copier après la connexion

2. Les alias de type Macros VS

 int main (){            
 { 
 //新范围开始              
 typedef int myInt_t;                 
 #define myInt_d int                
 myInt_t a;  // a的类型为int                
 myInt_d b;  // b的类型为int            
 } //新范围结束           
 myInt_t c; //错误,输入myInt_t未找到            
 myInt_d d; //d的类型为int        
 }
Copier après la connexion

#define peuvent également être utilisés pour définir des macros, mais typedef ne peut être utilisé que pour fournir de nouveaux noms. pour les types existants (il ne peut pas créer de nouveaux types). De même, #define peut être utilisé pour définir la variable

qui ne définira pas réellement N, mais remplacera N par 10 dans tout le code. Il peut donc être utilisé pour des constantes nommées. Typedef ne peut fournir de nouveaux noms que pour les types définis

#define N 10
Copier après la connexion
3. Utilisez typedef comme alias de type

Certaines définitions de types ne peuvent être définies qu'à l'aide de typedef et ne peuvent pas être utilisées #define définition. Exemple : (1) Attribuez un nouveau nom au tableau d'entiers de taille 10

(2) Attribuez un nouveau nom au type de structure

       typedef int arr [ 10 ] ;
Copier après la connexion
Résumé : Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation de la structure typedef en langage C Utilisation de la structure typedef en langage C May 09, 2024 am 10:15 AM

typedef struct est utilisé en langage C pour créer des alias de type de structure afin de simplifier l'utilisation des structures. Il crée un alias pour un nouveau type de données sur une structure existante en spécifiant l'alias de la structure. Les avantages incluent une lisibilité améliorée, la réutilisation du code et la vérification du type. Remarque : La structure doit être définie avant d'utiliser un alias. L'alias doit être unique dans le programme et valide uniquement dans le périmètre dans lequel il est déclaré.

A quoi sert typedef A quoi sert typedef Sep 04, 2023 pm 01:20 PM

L'utilisation de typedef consiste à créer de nouveaux alias pour les types de données existants. L'utilisation de typedefs peut augmenter la lisibilité et la maintenabilité de votre code, en particulier lorsqu'il s'agit de types de données complexes. Pour les types de données simples, tels que les entiers, les nombres à virgule flottante ou les caractères, les avantages de l'utilisation d'alias ne sont pas évidents. Cependant, pour les types de données complexes tels que les pointeurs, les structures, les tableaux et les fonctions, les avantages de l'utilisation d'alias sont évidents. Un typedef ne peut pas être utilisé avant la définition d'une variable ou d'une fonction et est généralement créé en haut d'un fichier programme ou après une définition de structure.

Comprendre la gestion de la mémoire des pointeurs de fonction C++ : éviter les pièges de pointeur Comprendre la gestion de la mémoire des pointeurs de fonction C++ : éviter les pièges de pointeur Apr 29, 2024 pm 09:03 PM

Lors de l’utilisation de pointeurs de fonction en C++, la gestion de la mémoire doit être soigneusement réfléchie pour éviter les pièges. Ces pièges incluent des pointeurs suspendus (pointant vers des fonctions en dehors de leur portée) et des pointeurs sauvages (pointeurs de fonction qui ne sont jamais initialisés ou définis sur nullptr). Pour éviter ces pièges, suivez ces bonnes pratiques : initialisez toujours les pointeurs de fonction, gérez soigneusement la mémoire et utilisez des pointeurs intelligents. De cette façon, vous pouvez utiliser les pointeurs de fonction en toute sécurité et éviter de tomber dans les pièges des pointeurs.

Explication détaillée du développement du minuteur du noyau Linux et du pilote de travail différé Explication détaillée du développement du minuteur du noyau Linux et du pilote de travail différé Feb 13, 2024 am 11:57 AM

Les minuteries du noyau Linux et les tâches de retard sont deux mécanismes couramment utilisés pour implémenter des tâches planifiées et des tâches d'exécution différée. Ils permettent au pilote d'exécuter des fonctions spécifiques au moment approprié pour s'adapter aux besoins et aux caractéristiques du périphérique matériel. Mais comment utiliser correctement les timers du noyau Linux pour gérer les retards ? Cet article présentera les connaissances et les compétences de base du développement de pilotes de minuterie et de retard du noyau Linux sous les aspects théoriques et pratiques, ainsi que certains problèmes et solutions courants. Le minuteur du logiciel de minuterie du noyau s'appuie en fin de compte sur l'horloge matérielle. En termes simples, le noyau détectera si chaque minuteur enregistré dans le noyau a expiré après l'expiration de l'horloge, il rappellera la fonction d'enregistrement correspondante. ceci comme une interruption de la moitié inférieure. Réalité

définirComment définir des macros multilignes définirComment définir des macros multilignes Oct 11, 2023 pm 01:24 PM

définir définit une macro multiligne en utilisant `\` pour diviser `do { \ printf("%d\n", x \ } while (0)` en plusieurs lignes pour la définition. Dans une définition de macro, la barre oblique inverse `\` doit être le dernier caractère de la définition de macro et ne peut pas être suivie d'espaces ou de commentaires. Lorsque vous utilisez `\` pour la continuation de ligne, veillez à garder le code lisible et assurez-vous qu'il y a un `\` à la fin de chaque ligne.

Explorez l'importance et le rôle de la fonction de définition en PHP Explorez l'importance et le rôle de la fonction de définition en PHP Mar 19, 2024 pm 12:12 PM

L'importance et le rôle de la fonction de définition en PHP 1. Introduction de base à la fonction de définition En PHP, la fonction de définition est une fonction clé utilisée pour définir des constantes. Les constantes ne changeront pas leurs valeurs pendant l'exécution du programme. Les constantes définies à l'aide de la fonction de définition sont accessibles tout au long du script et sont globales. 2. La syntaxe de la fonction de définition La syntaxe de base de la fonction de définition est la suivante : définir("nom constant","valeur constante&qu

Comment écrire du code simple pour les feux d'artifice en langage C Comment écrire du code simple pour les feux d'artifice en langage C Apr 13, 2024 pm 09:18 PM

Pour écrire un code de feu d'artifice simple en C, vous devez suivre ces étapes : Inclure les fichiers d'en-tête et les bibliothèques. Définir des constantes et des macros. Créez une structure de données de particules. Déclarez les variables globales. Initialisez les particules de feux d'artifice dans la fonction main(). Mettez à jour la position et la vitesse de la particule dans la boucle de jeu et dessinez-les. Recherchez et détruisez les particules qui ont atteint leur fin de vie.

La différence entre la structure typedef et la structure en C++ La différence entre la structure typedef et la structure en C++ May 01, 2024 am 11:36 AM

La différence entre typedef struct et struct : typedef struct crée un alias d'un type de structure, tandis que struct définit un nouveau type de structure. L'alias créé par typedef struct peut être utilisé après sa déclaration, tandis que la structure définie par struct peut être utilisée après sa définition. Ni la structure typedef ni la structure ne créent d'espace de stockage supplémentaire.