Aller au menu - Aller au contenu

Nouvelle norme C11 adoptée

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Taurre
Publié : le 26/12/2011 à 17:49:10
Catégorie : Programmation
Visualisations : 18 017

Licence : Creative Commons BY SA

Nouvelle norme C11 adoptée

Cela fait maintenant plusieurs années que le comité de normalisation du langage C travaille sur la remplaçante de l'actuelle norme C99. Cette dernière n'a pas connu un franc succès (en témoigne le peu de compilateur supportant entièrement cette norme) notamment à cause du refus de Microsoft de supporter cette dernière, mais aussi à cause de certaines difficultés techniques (les tableaux de longueur variable par exemple). Aussi était-il important de corriger le tir avec une nouvelle norme, ce qui est désormais chose faite. :)

Les nouveautés


La nouvelle norme porte le nom de C11 et inclus bon lots de nouveautés. Parmi celles-ci, on peut notamment citer :

Support optionnel du multithreading



Deux nouveaux en-têtes threads.h et stdatomic.h font leurs apparitions et déclarent une multitude de fonctions permettant la gestion des threads ainsi que des mutex.

Possibilité d'obtenir et de spécifier l'alignement des objets



Pour ceux qui ne le savent pas, l'alignement consiste à placer certains objets à une adresse multiple d'un certain nombre. Cet alignement est parfois nécessaire afin d'éviter des erreurs, mais est aussi parfois utilisé dans un but d'optimisation.

Jusqu'à présent, il était nécessaire de passer par l'Assembleur pour connaître l'alignement d'un objet ou pour le modifier. Désormais, il est possible d'utiliser le mot-clé _Alignof pour obtenir l'alignement d'un objet et le mot-clé _Alignas pour spécifier l'alignement d'un objet lors de sa définition (il est également possible d'utiliser les macros alignof et alignas définies dans le nouvel en-tête stdalign.h). De même, la nouvelle fonction aligned_alloc permet d'allouer dynamiquement un objet respectant un certain alignement spécifié en argument.

Nouvelles fonctions pour le support de l'Unicode



Le nouvel en-tête uchar.h défini deux nouveaux types : char16_t et char32_t permettant de stocker des caractères encodés respectivement en UTF_16 et UTF_32 et des fonctions de conversions permettant de traiter avec ces derniers. De plus, il est possible de spécifier l'encodage des chaînes littérales en les précédant de u8, u ou U (pour UTF-8, UTF-16 et UTF-32).

Les sélections génériques



Les sélections génériques peuvent être vues comme des switch qui effectuent des remplacements suivant le type d'une expression. Un exemple sera je pense plus parlant :

Code : C
1
2
3
4
5
#define sqrt(X) _Generic((X),               \
                        long double: sqrtl, \
                        default: sqrt,      \
                        float: sqrtf        \
                        )(X)

L'en-tête math.h déclare trois fonctions permettant de calculer la racine carrée d'un nombre : sqrtf, sqrt et sqrtl. Ces trois fonctions sont identiques, mise à part qu'elles attendent respectivement un argument de type float, double et long double. Afin d'uniformiser l'appel, on défini une macro sqrt utilisant une sélection générique.

Comment cela fonctionne-t-il ? Hé bien, suivant le type de l'expression passée comme premier argument de _Generic (ici il s'agit de l'argument passé à la macro), l'expression _Generic(/* ... */)(X) sera remplacée par sqrtl(X), sqrt(X) ou sqrtl(X).

Support des structures et unions anonymes



Jusqu'à présent, lorsque vous définissiez une structures ou une union dans une autre, il vous était nécessaire de la nommer. Par exemple comme ceci :

Code : C
1
2
3
4
5
6
7
8
struct une {
	int x;

	struct {
		int y;
		int z;
	} deux;
};

et donc d'accéder aux champs de cette dernière comme cela :

Code : C
1
2
3
test.x = 10;
test.deux.y = 20;
test.deux.z = 30;


Cela n'est désormais plus nécessaire et il est donc possible de procéder comme suit :

Code : C
1
2
3
4
5
6
7
8
struct une {
	int x;

	struct {
		int y;
		int z;
	};
};


Code : C
1
2
3
test.x = 10;
test.y = 20;
test.z = 30;


Mode d'ouverture exclusif



Un nouveau mode d'ouverture des fichiers fait son apparition, le mode exclusif ("x"). Ce dernier n'est utilisable qu'en combinaison avec le mode "w" et permet, entre autre, de faire échouer l'ouverture si le fichier à créer existe déjà. Cette fonctionnalité est très utile pour mettre en place des verrous entre différents programmes.

Suppression de la fonction gets



La fonction gets, connue pour son défaut de sécurité, ne fait désormais plus partie des fonctions standards. Une remplaçante nommée gets_s est proposée dans l'annexe K, mais elle ne fait pas officiellement partie de la liste des fonctions standards.

Support optionnel des tableaux de longueur variable et des nombres complexes



Le support des tableaux de longueur variable (c'est-à-dire dont la taille est spécifiée par une variable) et des nombres complexes n'est désormais plus obligatoire comme en C99, mais optionnel.

Conclusion


Ceci n'est qu'un aperçu des nouveautés apportées par la norme, il y en a bien entendu d'autre. ;)

Il reste désormais aux différents compilateurs et aux différentes bibliothèques C à implémenter ces nouvelles fonctionnalités. Ce travail a déjà commencé pour GCC ainsi que pour Clang, bien que pour l'instant cela ne soit encore que des ébauches. Toutefois, si vous souhaitez déjà bénéficier de ces avancées, il vous suffit de disposer de leur dernière version et de compiler avec l'option -std=c11 ou -std=c1x.

Espérons que cette nouvelle norme connaîtra un meilleur succès que la précédente. :)

Sources et liens


79 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  3  Suivante
Hors ligne Maëlan # Posté le 26/12/2011 à 17:50:11
Avatar

Oh yeah!

Je sens que je vais bien aimer les unions /structures anonymes et le support d'Unicode (je suis justement en train de rédiger un tuto dessus !).


Merci Taurre pour la news !

© Message rédigé sous la seule propriété intellectuelle de son auteur Maëlan, et protégé contre toute reproduction partielle ou totale par l’ACTA (je vous remercie).
Logo de Xubuntu

Ne pas passer la main à travers l’enclos des loups.
Ne pas nourrir les lamas.
Ne pas utiliser de flash pour photographier les poneys.
Ne pas se moquer des manchots.


Un alias bien pratique : alias Taurre='cat http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf | grep TOPIC'. À ceux qui comprendront. ;)
 
Hors ligne informaticienzero # Posté le 26/12/2011 à 17:53:24
City Hunter
Avatar

La norme est déjà officielle et définitive ou ce n'est encore qu'un brouillon ?

Image utilisateur Aidez ce chat à conquérir le monde, mettez-le dans votre signature.

Vous voulez apprendre à programmer mais vous ne savez pas par où commencer ?

90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
 
Hors ligne Nicolas M. # Posté le 26/12/2011 à 17:57:18
M(NiCoLaSm) = 406,9 g/mol
Avatar

Ville : Notre-dame de bondeville
Pays : France métropolitaine

@informaticienzero : Comme le mentionne le titre de la news, la norme a déjà été adoptée… ;)

Image utilisateur Image utilisateur

Le saviez-vous ? Les forums sont environ 283 174 fois plus efficaces que ma boîte MP pour vous aider. ;)
Image utilisateur
 
Hors ligne Taurre # Posté le 26/12/2011 à 17:57:29
Avatar

Études : Université de Liege

Salut,

Citation : informaticienzero

La norme est déjà officielle et définitive ou ce n'est encore qu'un brouillon ?


C'est officiel et définitif (cf premier lien des sources) ;)

EDIT: grilled

Au fait, pour ceux que cela intéresse, la version 4.7 de GCC est sortie tout récemment et gère les nouvelles fonctionnalités concernant l'alignement. Plus d'info ici ^^

Pour une coloration syntaxique du C à jour :pirate:

« In our experience, C has proven to be a pleasant, expressive, and versatile language for a wide variety of programs. It is easy to learn, and it wears well as one's experience with it grows ». (Brian W. Kernighan & Dennis M. Ritchie)
 
Hors ligne Kyron # Posté le 26/12/2011 à 18:04:12
Qu'engil meure
Avatar

Citation : Taurre
Au fait, pour ceux que cela intéresse, la version 4.7 de GCC est sortie tout récemment

Non, je ne crois pas qu'elle soit sortie.
Hors ligne Andromèdos # Posté le 26/12/2011 à 18:04:58
Avatar

Je pense que, à part les tableaux dynamique, cela ne change pas grand chose pour les programmeur amateur(ou débutant).

A moins que je me trompe et qu'une personne m'explique un peu différemment ^^

C pas évident ! :p
 
Hors ligne informaticienzero # Posté le 26/12/2011 à 18:05:49
City Hunter
Avatar

Merci de vos réponses. Si j'ai bien compris le C gère l'Unicode c'est ça ?

Image utilisateur Aidez ce chat à conquérir le monde, mettez-le dans votre signature.

Vous voulez apprendre à programmer mais vous ne savez pas par où commencer ?

90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
 
Hors ligne pacman2 # Posté le 26/12/2011 à 18:10:08
Zzzz
Avatar

Yeah mec !
Je vais regarder de plus pres les fonctions de multithread :p
 
Hors ligne Taurre # Posté le 26/12/2011 à 18:14:26
Avatar

Études : Université de Liege

Citation : Kyron

Citation : Taurre

Au fait, pour ceux que cela intéresse, la version 4.7 de GCC est sortie tout récemment

Non, je ne crois pas qu'elle soit sortie.


Il me semble que si. En tous les cas, elle est disponible dans les dépôts experimental de Debian.

Citation : informaticienzero

Merci de vos réponses. Si j'ai bien compris le C gère l'Unicode c'est ça ?


Pour l'UTF-16 et l'UTF-32, il existe désormais des fonctions de conversion chaîne de caractères -> chaine de char16_t ou char32_t et inversément. Pour l'UTF-8 par contre, mise à part la possibilité d'obtenir une chaîne littéral dans cet encodage, il n'y a rien de nouveau. Je n'ai pas très bien compris pourquoi d'ailleurs (ou alors j'ai mal compris l'objectif des nouvelles fonctions de conversions)...

Pour une coloration syntaxique du C à jour :pirate:

« In our experience, C has proven to be a pleasant, expressive, and versatile language for a wide variety of programs. It is easy to learn, and it wears well as one's experience with it grows ». (Brian W. Kernighan & Dennis M. Ritchie)
 
Hors ligne informaticienzero # Posté le 26/12/2011 à 18:27:18
City Hunter
Avatar

Donc on peut utiliser les accents désormais ?

Image utilisateur Aidez ce chat à conquérir le monde, mettez-le dans votre signature.

Vous voulez apprendre à programmer mais vous ne savez pas par où commencer ?

90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
 
Hors ligne Maëlan # Posté le 26/12/2011 à 19:11:01
Avatar

Citation : informaticienzero
Donc on peut utiliser les accents désormais ?

On pouvait déjà avant, mais il fallait recoder ses propres fonctions pour gérer l'Unicode (ou alors utiliser wchar_t, mais seulement pour les encodages style OEM ou 8859 si j'ai bien compris - d'ailleurs le tuto laisse carrément ce sujet dans l'ombre...).

C'est dommage pour l'UTF-8, ça aurait sans doute été le plus important.

© Message rédigé sous la seule propriété intellectuelle de son auteur Maëlan, et protégé contre toute reproduction partielle ou totale par l’ACTA (je vous remercie).
Logo de Xubuntu

Ne pas passer la main à travers l’enclos des loups.
Ne pas nourrir les lamas.
Ne pas utiliser de flash pour photographier les poneys.
Ne pas se moquer des manchots.


Un alias bien pratique : alias Taurre='cat http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf | grep TOPIC'. À ceux qui comprendront. ;)
 
Hors ligne jolfo # Posté le 26/12/2011 à 19:20:46
‘Errare humanum est’
Avatar

Ville : Roeux
Pays : France métropolitaine

OMG ! Mais c'est du B-E-A-U tous ça ^^
Je vais me remettre a faire du C moi xD
J'ai arrêtai mais j'aide les ptits nouveaux :/

Vive le C !! A bah le C++ !!
Le C vaincra !


Pas tapez. Je programme aussi en C++ (même plus) alors...


UserBarre
Faites les vivres, ils ont besoins de vous !
On recherche le vrai Zozor !
Moi ? J'aide les nouveaux en C / C++ et aussi pour plein d'autre truc subtiles (Mais pas forcément)
Attention ! J'ai déjà été banis, ça veut dire que je suis dangereux :diable:
 
Hors ligne D1@blo # Posté le 26/12/2011 à 19:30:49
Avatar

Ville : Penvénan
Pays : France métropolitaine
Études : BTS IRIS

Maintenant j'espère que M@teo21 va mettre son cours à jour ^^

linuxien en force :D
oh pinèse !! miam miam bière duff :p
 
Hors ligne Patoch # Posté le 26/12/2011 à 19:34:21
EuropeTrotteur.com
Avatar

Études : ESGI

Ils ont faillit l'appeler le C12 vu la date de la sortie :)
 
Hors ligne Taurre # Posté le 26/12/2011 à 19:37:56
Avatar

Études : Université de Liege

Citation : Maëlan

C'est dommage pour l'UTF-8, ça aurait sans doute été le plus important.


Je suis du même avis que toi. Mais en fait, c'est même pas si top que cela pour les nouvelles fonctions de conversions parce que je me rends compte qu'elles n'utilisent l'UTF-16 ou l'UTF-32 que si cela est supporté par le système (auquel cas les constantes __STDC_UTF_16__ et __STDC_UTF_32__ sont définies). Sinon, elles utilisent l'encodage du système... Bref, on va visiblement encore être bon pour utiliser des fonctions de conversion maison :-°

PS: j'ai hâte de voir ton tutoriel sur l'Unicode ^^

Pour une coloration syntaxique du C à jour :pirate:

« In our experience, C has proven to be a pleasant, expressive, and versatile language for a wide variety of programs. It is easy to learn, and it wears well as one's experience with it grows ». (Brian W. Kernighan & Dennis M. Ritchie)
 
Hors ligne germino # Posté le 26/12/2011 à 20:18:35
public programmer<C++>
Avatar
Flux RSS

Ville : St germain laprade
Pays : France métropolitaine

Citation : D1@blo
Maintenant j'espère que M@teo21 va mettre son cours à jour ^^

C'est pas pour tout de suite vu que y'a pas encore de compilateurs généralisés qui supportent cette norme...

Et puis maintenant, c'est autant de fonctionnalités qu'il faudra inclure dans le C++22 ^^ (parce que y'a pas d'espoir pour une norme plus tôt...)

Citation : Qui-Gon-Jin
Ce n'est pas parce que tu parles que tu es intelligent.
 
Hors ligne informaticienzero # Posté le 26/12/2011 à 20:24:22
City Hunter
Avatar

Citation : D1@blo
Maintenant j'espère que M@teo21 va mettre son cours à jour ^^


Je crois que tu rêve.

Image utilisateur Aidez ce chat à conquérir le monde, mettez-le dans votre signature.

Vous voulez apprendre à programmer mais vous ne savez pas par où commencer ?

90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
 
Hors ligne jolfo # Posté le 26/12/2011 à 21:18:34
‘Errare humanum est’
Avatar

Ville : Roeux
Pays : France métropolitaine

Citation : informaticienzero
Citation : D1@blo
Maintenant j'espère que M@teo21 va mettre son cours à jour ^^


Je crois que tu rêve.


Pas forcément, il a bien actualisé c'lui du HTML5/CSS3 :-°
(Mais bon il rêve quand même un peu)


UserBarre
Faites les vivres, ils ont besoins de vous !
On recherche le vrai Zozor !
Moi ? J'aide les nouveaux en C / C++ et aussi pour plein d'autre truc subtiles (Mais pas forcément)
Attention ! J'ai déjà été banis, ça veut dire que je suis dangereux :diable:
 
Hors ligne Davidbrcz # Posté le 26/12/2011 à 21:36:05
Geek un jour, geek toujours !
Avatar

Citation : germino

Et puis maintenant, c'est autant de fonctionnalités qu'il faudra inclure dans le C++22 ^^ (parce que y'a pas d'espoir pour une norme plus tôt...)


thread -> cf C++11
alignement -> oui, pourquoi pas.
Les sélections génériques -> Une sous version des templates .....
Les unions anonymes existent déjà en C++, pour ce qui en est des structures anonymes, je n'en vois pas vraiment l'intérêt. A creuser.
Mode d'ouverture exclusif -> bonne idée à mon sens
Suppression de la fonction gets, Support optionnel des tableaux de longueur variable et des nombres complexes -> problèmes du C. On a déjà la solution en C++

A regarder la page wikipedia de la norme, j'ai l'impression qu'elle est assez pauvre en nouveauté. A coté le C++11 en offre beaucoup !

Partager grâce à l'open source et aux logiciels libres.

Mes articles
Bibliothèques C++ et celles orientées jeux, FAQ C++
 
Hors ligne informaticienzero # Posté le 26/12/2011 à 21:46:17
City Hunter
Avatar

Citation : jolfo
Citation : informaticienzero
Citation : D1@blo
Maintenant j'espère que M@teo21 va mettre son cours à jour ^^


Je crois que tu rêve.


Pas forcément, il a bien actualisé c'lui du HTML5/CSS3 :-°
(Mais bon il rêve quand même un peu)


Ouais mais depuis le temps qu'on lui demande d'actualiser son tutoriel sur le C et qu'il ne le fait pas.

Image utilisateur Aidez ce chat à conquérir le monde, mettez-le dans votre signature.

Vous voulez apprendre à programmer mais vous ne savez pas par où commencer ?

90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
 
Hors ligne Taurre # Posté le 26/12/2011 à 21:52:41
Avatar

Études : Université de Liege

Citation : Davidbrcz

thread -> cf C++11
alignement -> oui, pourquoi pas.
Les sélections génériques -> Une sous version des templates .....
Les unions anonymes existent déjà en C++, pour ce qui en est des structures anonymes, je n'en vois pas vraiment l'intérêt. A creuser.
Mode d'ouverture exclusif -> bonne idée à mon sens
Suppression de la fonction gets, Support optionnel des tableaux de longueur variable et des nombres complexes -> problèmes du C. On a déjà la solution en C++


J'ajouterais juste que pour le support de l'Unicode, l'en-tête cuchar a été ajouté par la Norme C++11, de même que les classes u16string et u32string.

Citation : Davidbrcz

A regarder la page wikipedia de la norme, j'ai l'impression qu'elle est assez pauvre en nouveauté. A coté le C++11 en offre beaucoup !


Par rapport à la Norme C++11 il y a effectivement nettement moins de nouveautés. Cependant, il ne faut pas perdre de vue que le C est un langage plus "simple" (pourvu de moins de concepts et de fonctionnalités), qui vise à être utilisable sur un grand nombre d'architecture différentes et qu'un des objectifs de la nouvelle norme est que son support soit plus simple (je pense par exemple au fait que le support des tableaux de longueur variable est désormais facultatif)

Pour une coloration syntaxique du C à jour :pirate:

« In our experience, C has proven to be a pleasant, expressive, and versatile language for a wide variety of programs. It is easy to learn, and it wears well as one's experience with it grows ». (Brian W. Kernighan & Dennis M. Ritchie)
 
Hors ligne schadocalex # Posté le 26/12/2011 à 22:22:22
Why not ?
Avatar

Ville : Saran
Pays : France métropolitaine

Merci pour cette news sur le C ! Je vais me pencher sur les threads pour ma part.
Hors ligne Renault # Posté le 26/12/2011 à 22:39:53
Powered by GNU/Linux Fedora
Avatar
Newsers
Flux RSS

Ville : Ollioules
Pays : France métropolitaine
Études : ISEN Toulon

Citation : Davidbrcz

A regarder la page wikipedia de la norme, j'ai l'impression qu'elle est assez pauvre en nouveauté. A coté le C++11 en offre beaucoup !


C'est bien la preuve que le C est plus proche de la perfection que le C++ qui ne fait que de rattraper son retard. :-°

« L'entropie d'un code augmente avec le temps qui s'écoule et le nombre de développeurs qui s'y ajoutent » — De moi même.

Si vous n'êtes pas satisfait d'un Logiciel Libre, plutôt que de troller ou de critiquer, vous pouvez rapporter des bogues ou soumettre des patchs. C'est communautaire, c'est pour chacun puisse apporter sa pierre à l’édifice.


 
Hors ligne themagicdavid # Posté le 26/12/2011 à 23:22:26
magique!
Avatar

Ville : Quimperlé
Pays : France métropolitaine
Études : BTS Systemes Électronique Pau

Depuis le temps que l'on en parle un peu partout, je dirais qu'il était temps, mais bon, encore faut il que ces standards soient adopté par les plus grand sinon c'est pas la peine ...

Extrait de la doc php : Pour les versions 64-bit de PHP, l'intervalle valide d'un timestamp est réellement infini, sachant que 64 bits peut représenter approximativement 293 milliards d'années dans n'importe quelle direction.

Des Sites et leurs positions google
un Magicien en Bretagne / ou Devenir Sorcier ? -- ADLO - La Grimpe en Bretagne
SUJET SDZ : {site web} recrute les électroniciens intéressés...
/
Dis-donc, elle est pas un peu longue ta signature là ?
 
Hors ligne candide # Posté le 27/12/2011 à 00:04:47
"In C ode we trust"
Avatar

Citation : themagicdavid
encore faut il que ces standards soient adopté par les plus grand sinon c'est pas la peine ...



+1. Et aussi de l'adoption de ces nouveautés par la communauté. Le C utilisé aujourd'hui est encore C90.

  • Make it work, Make it well, Make it fast, Make it short, Make it fun
  • Comment insérer les balises de code dans un message ? : Screencast ou Texte
  • Le rasoir d'Occam : Entities should not be multiplied beyond necessity.
  • KISS !
  • Le gâteau sous la cerise.
  • (Lien vers fichier pdf) La norme du langage C 99
  • scanf et printf : les colifichets de la programmation bling bling

 
Hors ligne planete.game57 # Posté le 27/12/2011 à 07:23:24
Avatar

Études : IRIS

Quelqu'un a une idée quand Code::Blocks supportera entièrement cette norme ? Enfin, le compilateur de l'IDE.

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne Aless # Posté le 27/12/2011 à 07:58:22
Avatar

Ville : Schiltigheim
Pays : France métropolitaine

Alors voici ce qu'en j'en pense, pas mal de truc inutiles:

- sélections génériques, support de ci et ça
- mode d'ouverture exclusif (on passe d'un test de une ligne à un "wx", quel amélioration du C dis donc)
- gets supprimé pour mettre un gets_s => blague?

Mise à part ces trucs que seuls les kikoos vont aimés, car très inutiles, il y a tout de mêmes de bons points:

- multithreading mieux adapté :)
- alignement objet !! on va faire ses petits tests de perf :))
- support encodage :)))

Va falloir que je lise la doc, y'a pas mal d'autres changements

Ca compile! .. Seg fault -________-
 
Hors ligne zoup # Posté le 27/12/2011 à 08:52:01

je ne comprends pas comment tu peux trouver que le multithreading est mieux adapté d'une part et trouver d'autre part que le mode d'ouverture exclusif ne sert à rien.

Ce mode d'ouverture sert à mettre un verrou sur le fichier, donc est destiné au multithreading.

Quant à gets, elle représente une faille de sécurité. C'est sur que pour faire un jeu de pendu, le problème ne se posera pas vraiment.

A+
Connecté Gwenn # Posté le 27/12/2011 à 08:59:38
Chez moi ça marche.
Avatar
Groupe : Anciens

Citation : Fungoku
Alors voici ce qu'en j'en pense, pas mal de truc inutiles:

- sélections génériques, support de ci et ça
- mode d'ouverture exclusif (on passe d'un test de une ligne à un "wx", quel amélioration du C dis donc)
- gets supprimé pour mettre un gets_s => blague?

Mise à part ces trucs que seuls les kikoos vont aimés, car très inutiles, il y a tout de mêmes de bons points:

- multithreading mieux adapté :)
- alignement objet !! on va faire ses petits tests de perf :))
- support encodage :)))

Va falloir que je lise la doc, y'a pas mal d'autres changements

C'est drôle, moi je trouve que c'est dans ton premier paragraphe qu'on trouve les changements les plus intéressants. Classer ça comme trucs que "seuls les kikoo vont aimer" dénote beaucoup d'arrogance et surtout peu de maîtrise du sujet...

Image utilisateur
 
Hors ligne germino # Posté le 27/12/2011 à 09:40:57
public programmer<C++>
Avatar
Flux RSS

Ville : St germain laprade
Pays : France métropolitaine

Citation : Davidbrcz
Citation : germino

Et puis maintenant, c'est autant de fonctionnalités qu'il faudra inclure dans le C++22 ^^ (parce que y'a pas d'espoir pour une norme plus tôt...)


thread -> cf C++11
alignement -> oui, pourquoi pas.
Les sélections génériques -> Une sous version des templates .....
Les unions anonymes existent déjà en C++, pour ce qui en est des structures anonymes, je n'en vois pas vraiment l'intérêt. A creuser.
Mode d'ouverture exclusif -> bonne idée à mon sens
Suppression de la fonction gets, Support optionnel des tableaux de longueur variable et des nombres complexes -> problèmes du C. On a déjà la solution en C++

A regarder la page wikipedia de la norme, j'ai l'impression qu'elle est assez pauvre en nouveauté. A coté le C++11 en offre beaucoup !


Les struct anonymes (existe déjà en C++), c'est très utile ! Je les utilise quand une classe a énormément d'attributs pour hiérarchiser les-dits attributs, ou bien dans les unions (anonymes souvent) pour faire des unions de "paquets" de variables.

Exemple pour une structure destinée à transporter des événements gameplay :
Secret (cliquez pour afficher)

Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
struct CARD_EVENT
{
    enum {BONUS, KISS, COLLECTED_CARD, MISSION, DOUBLE_CHANCE} type;

    union
    {
        struct
        {
            enum
            {
                HELFIRE,
                LIGHTNING_BOLT,
                POISON,
                GOLDEN_ILLUSION,
                FOUR_CARDS
            } type;

            bool alivePlayer;
        } bonus;

        struct
        {
        	enum
        	{
        	    KISS,
                DEVILS_KISS,
                ANGELS_KISS
        	} type;

            bool alivePlayer;
        } kiss;

        struct
        {
        	enum
        	{
        	    SOLDIER,
        	    KNIGHT,
        	    OFFICER,
        	    HERO
        	} type;

            bool alivePlayer;
        } collected_card;

        struct
        {
            int addedCard;
            bool alivePlayer;
        } mission;

        struct
        {
            bool phantom_strike;
            int cards[3];
            bool alivePlayer;
        } double_chance;
    };
};


Il n'est ici d'aucune utilité de nommer toutes ces structures puisqu'elles n'existent que dans cette union et ne sont utilisées que dans cette union. Seul le nom de l'unique variable de leur type nous intéresse.

Citation : Renault
C'est bien la preuve que le C est plus proche de la perfection que le C++ qui ne fait que de rattraper son retard. :-°

Le C++ prend juste les bonnes idées là où elles sont. En l'occurrence, les nouvelles normes C fournissent des fonctionnalités qui sont facilement implémentable au C++ puisque ce sont des langages affiliés. Mais nombre de ces fonctionnalités (comme l'a souligné davibrcz) font déjà partie du C++ depuis un moment...

Citation : Qui-Gon-Jin
Ce n'est pas parce que tu parles que tu es intelligent.
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news

Lire aussi