Différences entre les QuickC
Voici les différences entre les différences versions de QuickC.
Ajouts du QuickC version 2.0
Les ajouts à la version 2.0 incluent :
- Système d'aide en ligne étendu et amélioré appelé en appuyant sur la touche F1.
- Nouvelles fonctions graphiques de présentation et de coordonnées réelles.
- Modèles de mémoire Small, Medium, Compact, Large et Huge.
- Prise en charge des routines en langage assembleur en ligne
- Nouvelles fenêtres Variables locales, Bloc-notes et Registres
- Prise en charge du copier-coller de texte
- Compilation en ligne de commande et liaison avec QC.EXE et QCL.EXE
- Compilation incrémentale.
- Utilitaire MKKEY pour personnaliser les raccourcis clavier de l'éditeur.
Ajouts et modifications de QuickC version 2.5
Les ajouts et modifications apportés à la version 2.5 affectent à la fois l'environnement QuickC et l'implémentation du langage de programmation C. Les sections suivantes répertorient ces modifications.
Changements d'interface et d'environnement
Cette section décrit les modifications apportées à l'interface utilisateur et à l'environnement de programmation de QuickC :
- La commande Go To du menu Search se déplace vers un numéro de ligne spécifié dans la source.
- La commande Quickwatch du menu Debug permet un accès plus rapide à la visualisation des variables et des expressions.
- La commande Color du menu Options vous permet de sélectionner quatre jeux de couleurs différents et de modifier la couleur des éléments tels que les menus, les bordures et les boutons.
- Les tabulations peuvent maintenant être traitées comme des espaces ou des caractères de tabulation réels.
Changements de langage et de compilateur
Cette section décrit les modifications apportées à l'implémentation QuickC du langage C et les modifications du comportement du compilateur.
Modèles de mémoire
- Le QuickC 2.5 prend désormais en charge le modèle de mémoire Tiny, produisant des fichiers .COM plutôt que des fichiers .EXE. Dans le modèle Tiny de mémoire, tout le code et les données de votre programme doivent tenir dans un seul segment de 64 Ko. De plus, les programmes Tiny ne prennent pas en charge les graphiques.
- Le QuickC 2.5 prend en charge les modèles de mémoire personnalisés, tels que Huge et Compact, avec l'option de compilateur /A.
Constantes
- Les valeurs long et unsigned long sont autorisées dans les expressions switch et les constantes case. Les versions précédentes de QuickC n'autorisent que les valeurs char et int dans ce contexte.
- Le QuickC prend en charge les constantes décimales unsigned long. Il est désormais possible d'initialiser des variables unsigned long avec des valeurs supérieures à MAX_LONG en utilisant des constantes décimales (plutôt que des constantes hexadécimales ou octales).
- La constante NULL est maintenant définie comme ((void *)0). La version précédente de QuickC définissait NULL comme 0x0000 pour les modèles Small et Medium et 0x00000000L pour les modèles Compact et Large.
Mots clefs (Mots réservés)
- Les classes d'entreposage de types (ou les deux) sont désormais requises sur les déclarations de variables. Le QuickC supposait auparavant que les variables non typées (telles que a ;) étaient des nombres entiers. La déclaration génère maintenant un avertissement.
- Le mot clef volatile, n'étant auparavant implémenté que syntaxiquement, est désormais également implémenté sémantiquement.
- Pour identifier les mots clefs définis par l'implémentation comme non-ANSI, un trait de soulignement a été ajouté. Ainsi, far, near, huge cdecl, fortran, interrupt et pascal ont été remplacés par _far, _near, _huge, _cdecl, _fortran, _interrupt et _pascal. Le QuickC accepte toujours la version obsolète de ces mots clefs, sauf si vous utilisez l'option /Za (désactiver les extensions).
- Une nouvelle pseudo-instruction, _emit, a été ajoutée pour être utilisée avec l'assembleur en ligne. Il vous permet de définir un seul octet immédiat à l'emplacement actuel dans le segment de texte actuel.
- Les qualificateurs const et volatile doivent être placés après le nom du type qu'ils qualifient.
- Le nouvel attribut de fonction _fastcall oblige le QuickC à transmettre les paramètres de la fonction dans les registres du microprocesseur plutôt que sur la pile. Il en résulte des fonctions plus rapides lorsqu'un programme QuickC est créé avec Microsoft C version 6.
Informations spécifiques à la localisation
- Le fichier d'entête LOCALE.H est nouveau dans la version 2.5. Il déclare des fonctions et des structures pour décrire des conventions, telles que le symbole monétaire, variant d'un pays à l'autre.
Objets basés
- Le QuickC 2.5 prend en charge les nouveaux mots clefs et opérateurs suivants, étant utilisés pour déclarer et manipuler des objets basés : _based, _segment, _segname et :> (l'opérateur de base). La prise en charge des objets basés est incluse dans QuickC 2.5 pour des raisons de compatibilité avec Microsoft C version 6.0.
Types de données
- Le QuickC version 2.0 reconnaît long double et double comme des types différents, les deux types étant entreposés en mémoire sous forme de quantités 64 bits. Étant donné que la famille de coprocesseurs mathématiques 80x87 prend en charge un type à virgule flottante 80 bits, le QuickC version 2.5 entrepose les variables long double au format 80x87 10 octets (80 bits). Certaines fonctions de la bibliothèque ont été modifiées pour gérer le type long double. La famille de fonctions printf et scanf prend en charge les valeurs long double identifiées par un l final dans le spécificateur de format. La bibliothèque contient de nouvelles versions des fonctions transcendantes ainsi que des formes intrinsèques acceptant les paramètres long double. Ceux-ci sont identifiés par un l à la fin du nom de la fonction (par exemple, cosl).
- Les règles de promotion des entiers ont changé. Les versions antérieures de QuickC tentaient de préserver autant que possible la nature non signée d'une expression. La version 2.5 tente de conserver la valeur de l'expression. Dans la version 2.0, un unsigned char est promu en un unsigned int ; un unsigned int promeut un unsigned long. Dans la version 2.5, un unsigned char est promu en un signed int ; un unsigned int est promu en un signed long.
- Les opérateurs de décalage donnent désormais un résultat du même type que l'opérande de gauche. Le QuickC produisait auparavant un résultat du même type que la plus grande des deux valeurs.
Préprocesseur
- Le QuickC permet des expansions de macros plus longues (jusqu'à 12 Ko). Dans des conditions de mémoire insuffisante, l'espace d'extension macro peut être limité à 6 Ko.
- Le pragma data_seg a été supprimé.
- La version 2.0 de QuickC traitait les expressions de compilation conditionnelle comme des valeurs signed long. La version 2.5 évalue ces expressions en utilisant les mêmes règles que celles utilisées pour toutes les autres expressions en C.
Structures, unions, tableaux et champs de bits
- Si une structure ou une union est imbriquée dans une autre structure ou union, vous pouvez la déclarer sans utiliser de nom de variable. Cette règle simplifie les références aux membres internes de ces constructions imbriquées.
- Le QuickC autorise désormais un membre unsigned ou de taille zéro comme dernier membre d'une structure. Les tableaux non dimensionnés ne peuvent apparaître que comme le dernier membre d'une structure. Les structures contenant des déclarations de tableau non dimensionné peuvent être imbriquées dans d'autres structures tant qu'aucun élément de la structure englobante ne suit le tableau non dimensionné. Les tableaux d'une telle structure ne sont pas autorisés.
- Le QuickC permet désormais des littéraux de chaîne de caractères plus longs (jusqu'à 2 Ko).
- Vous pouvez déclarer signed ainsi que des champs de bits non signés.
- Les champs de bits sont autorisés dans les unions.
Gestion de la mémoire
- La routine de gestion de la mémoire sbrk a été supprimée.
- La fonction _fmalloc tente d'allouer de la mémoire far. Dans les versions précédentes de QuickC, _fmalloc appelait _nmalloc si la mémoire distante far n'était pas disponible. Maintenant, il renvoie un pointeur nul si la mémoire lointaine n'est pas disponible, même si la mémoire proche est disponible.
- Les versions précédentes de QuickC plaçaient les chaînes de caractères de paramètres de ligne de commande et les chaînes de caractères d'environnement dans la mémoire de tas near. Maintenant, ils sont alloués via malloc. Étant donné que malloc correspond à _fmalloc dans les modèles Compact et Large, les chaînes de caractères d'environnement et le paramètre de ligne de commande se trouvent dans la mémoire far dans ces modèles de mémoire.
Divers
- Le QuickC prend en charge un nouveau niveau d'avertissement (4), fournissant une vérification des erreurs encore plus stricte que les niveaux d'avertissement de la version 2.0. Vous pouvez définir ce niveau d'avertissement à partir de la ligne de commande, en fournissant l'option de compilateur /W4, ou à partir de l'environnement QuickC, avec le bouton Compiler Flags affiché avec la commande Make dans le menu Options. Au niveau d'avertissement 4, QuickC génère des avertissements pour les constructions non portables (non ANSI) et pour les constructions non définies ou définies par l'implémentation.
- Les modificateurs de spécificateur de format printf et scanf N, F, h et l ont changé.
- Dans QuickC 2.0, un prototype ou une définition renvoyant une valeur flottante renvoie en fait une valeur double. La version 2.5 interprète une telle fonction comme renvoyant une valeur float.
- Le QuickC version 2.5 n'aligne pas une variable char sur une adresse paire sauf si la variable est locale. De même, une chaîne de caractères constante littérale n'est pas alignée comme dans QuickC 2.0.
- Pour maintenir la compatibilité et la portabilité ANSI entre QuickC et d'autres systèmes, le QuickC prend désormais en charge les trigraphes tels que ??= équivalent à #.
Dernière mise à jour : Jeudi, le 24 juin 2021