8158Fermer8160
GoldenCrystalLe 18/04/2010 à 20:29
Zerosquare (./8156) :
y'a quand même le préprocesseur qui n'existe pas
C'est vrai pas de macro, c'est parfois dommageable, mais ça a le mérite de rendre le code plus lisible. Pour le reste il y a quand même un semblant de préprocesseur (mais c'est fait dans la même passe que le parsing de mémoire).
l'absence de fall-thru dans les case
Ça c'est faux.
Le fall-thru implicite est interdit uniquement pour les case non vides, mais tu peux dans tous les cas le rendre explicite avec un goto smile

Et arrête de répondre pour Kevin, tu viens de lui donner des arguments sans qu'il n'aie à chercher alors qu'il n'en aurait certainement pas trouvé beaucoup sinon ! sad
Kevin Kofler (./8157) :
les fonctions globales
Hmm, oui et non.
Par exemple, les méthodes d'extension sont des méthodes globales (tu les déclares dans un fichier et tu peux les utiliser ensuite comme par magie), et les vraies méthodes globales sont totalement supportées par le CLR. (qui ne se cantonne pas à C# et permet d'autres langages tel que le C++)
Mais, C# se base sur le concept de noms. Rien n'est accessible en dehors d'un contexte défini, que ce soit un espace de noms, une classe, une méthode, … Ainsi, une méthode statique est à peu de choses près équivalente (moyennant les quelques cadeaux bonux fournis avec, quoi) à une méthode globale…
Mettre un void en liste des paramètres n'est pas une fonctionnalité, c'est facultatif tongue
Non, en C, ça change le sens du code! Ce n'est vraiment facultatif qu'en C++.
gna gna gna, c'est moche et ça sert à rien, stout tongue
Le C# comme le Java n'a rien à battre de la compatibilité antérieure avec le C, donc ce n'est pas du C objet, un point c'est tout.
Quelle compatibilité antérieure ? Antérieure avec le néant ?
C# n'a jamais été défini comme étant rétro-compatible avec le C, il a été défini comme une évolution du C et du C++, ça ne signifie en aucun cas compatibilité. Cette « fonctionnalité » n'a pas lieu d'exister. (Pour Java les choses sont un peu différentes mais ça revient au même)
De même les #include & compagnie sont liés au modèle de compilation, ce n'est pas une fonctionnalité. (et le C# possède bien #if #else et #endif … avant que tu ne cherches à aller dans ce sens)

Et quelque chose comme:
#define MAMACRO(x1, x2, ...) (machin(x1, x2) + printf(x1, __VA_ARGS__))?
Ça, on peut le faire sans macro wink
C'est très différent, il y a certes des fonctionnalités en plus, mais il y en a d'autres en moins (genre un préprocesseur digne de ce nom), et puis c'est totalement incompatible, donc ce n'est pas du C objet.
Ah oui, ce n'est pas moi qui ai balancé du C objet, je ne suis pas non plus d'accord avec ça tongue
Je suis juste contre le fait que tu prétendes qu'il y ait « beaucoup » de fonctionnalités en moins. À mon avis il y en a surtout beaucoup en plus, mais passons smile