C et C++ : y a un truc dont vous aimeriez parler ? - Divers - Programmation
Marsh Posté le 31-01-2004 à 12:31:10
Drapeau
Marsh Posté le 31-01-2004 à 13:11:47
y'a moyen de connaitre l'offset d'une variable membre a compile-time ? (genre toto de "this + toto" )
Marsh Posté le 31-01-2004 à 13:14:35
alors en C++, ça pose des problèmes avec les fonctions membres en autre.
mais en C ou avec des banales structures, tu
offsetof dans <stddef.h> (c'est une macro triviale)
offsetof(struct meta_infos, author) qui retourne un size_t
je m'en suis servi dernièrement pour remplacer une longue série de strcmp par un bsearch, ça marche très bien
Code :
|
évidemment pour les fonctions, c'est interdit (mais supporté par certains compilateurs). -> pointeurs de fonctions membres, etc
Marsh Posté le 31-01-2004 à 14:06:17
les macros on ne s'en sert que lorsqu'on a pas le choix évidemment.
perso, les dernières que j'ai faite, c'était en C ANSI (bordel de compatibilité gcc-2.95) et elle visait 1 choses : remplacer l'absence de template. sinon ça m'arrive souvent de m'en servir pour réduire la longueur de noms de fonction quand je bosse avec l'API C de python, les expressions deviennent trop longues ...
y a pas grand chose à savoir, si ce n'est qu'il vaut mieux écrire
#define GO(X) do{ /* ... */ } while(0)
que
#define GO(X) { /* ... */ }
Marsh Posté le 31-01-2004 à 17:51:02
[citation=626912,1][nom]taz a écrit[/nom
Code :
|
[/citation]Bon c'est peut-être con comme question, mais quel est exactement l'interet de faire ça sous forme de template plutot que d'une bête fonction ? C'est juste pour l'inlining ?
Marsh Posté le 31-01-2004 à 18:30:12
taz a écrit : par les bons programmeurs, oui |
les autres ils se contente de renvoyer des faux booléens valant TRUE, FALSE, ou 2 (déjà vu )
Marsh Posté le 31-01-2004 à 18:47:41
R3g a écrit : Bon c'est peut-être con comme question, mais quel est exactement l'interet de faire ça sous forme de template plutot que d'une bête fonction ? C'est juste pour l'inlining ? |
ça prouve que c'est établie au moment de la compilation pour les sceptiques, mais bon, j'aurais pu faire une enum
Marsh Posté le 01-02-2004 à 10:38:27
taz> t'as qua faire un joli topic cours sur les pointeurs
nan parce que c'est quand meme un probleme recurant
PS: si ce n'est pas déjà fait
Marsh Posté le 01-02-2004 à 12:17:58
T'utilises jamais le "quoted" comme nous
nous on utilise ça pour souligner une connerie que quelqu'un dit, toi tu utilises ça pour mettre en évidence tes posts...
Marsh Posté le 01-02-2004 à 12:23:29
j'appelle ça une « rétro-citation »
toi aussi, le jeune, tu peux l'utiliser pour mettre en évidence un message déjà posté
Marsh Posté le 01-02-2004 à 13:19:03
et puis d'ailleurs, estimez vous heureux que je ne réclame aucun droit à chaque fois que l'un d'entre vous utilise ce smiley
Marsh Posté le 01-02-2004 à 13:19:41
Mr yvele a écrit : taz> t'as qua faire un joli topic cours sur les pointeurs |
tu fais du C#, t'as pas besoin des pointeurs !
Marsh Posté le 01-02-2004 à 13:39:06
ReplyMarsh Posté le 01-02-2004 à 13:47:06
Harkonnen a écrit : |
t'as dû rater le topic sur les structures en C# toi.
Marsh Posté le 01-02-2004 à 14:21:22
Harkonnen a écrit : |
unsafe
{
peut être hein, qui sait..
}
Marsh Posté le 01-02-2004 à 14:22:58
taz a écrit : |
ce smiley n'a pas été prévu pour ça, et son look en caps est là en témoignage des quotes de smileys foireux d'Harko
donc ce smiley est à la base pour ridiculisé celui qui est quoté.
Enfin, tu peux te quoter si ça t'amuses
Marsh Posté le 01-02-2004 à 14:55:25
antp a écrit : |
OK. j'ai le droit d'être ridicule. Je vais me cherche un simley pour dire
Marsh Posté le 01-02-2004 à 22:29:49
pour ben j'ai pas de succès en fait.
y a pas beaucoup d'amateurs. la question de BlackGodess sur les friend template a fait un bide ...
Marsh Posté le 01-02-2004 à 23:25:07
J'en aurais bien des questions, mais elles sont encore bien vagues. Notamment à propos des fonctions virtuelles et de leur surcoût à l'éxécution. En temps que débutant, j'ai pas mal d'à priori par rapport à l'emploi de fonctions virtuelles dans un programme qui nécessiterait les meilleurs performances possibles.
Dans quelle mesure ce surcoût devient non négligeable ? Y'a t'il des architectures (au sens organisation du code) à éviter absolument ?
Je "connais" en surface le fonctionnement des fonctions virtuelles (utilisation de la table des fonctions), mais je peux lire à droite à gauche que la surcharge est acceptable, mais pas pour certains types d'applications ayant des besoins important en performance.
En fin de compte, dans quel mesure le polymorphisme est plus "efficace" qu'une logique avec des switch (je ne parle uniquement ici de l'aspect performance). En fin de compte, le seul désavantage serait que le compilateur ne puisse pas mettre en ligne les fonctions virtuelles.
Quid de la situation ?
Marsh Posté le 01-02-2004 à 23:31:33
Evadream -jbd- a écrit : J'en aurais bien des questions, mais elles sont encore bien vagues. Notamment à propos des fonctions virtuelles et de leur surcoût à l'éxécution. En temps que débutant, j'ai pas mal d'à priori par rapport à l'emploi de fonctions virtuelles dans un programme qui nécessiterait les meilleurs performances possibles. |
si il y a un surcout ca fait longtemps qu'il est tombé dans le domaine de l'oubli.
Citation : |
je suis pret a parier que n'importe quel CPU prefere faire un appel indirect plutot que du defaut de prediction de branchement (surtout sur un gros switch de porc)
Marsh Posté le 01-02-2004 à 23:32:10
chrisbk a écrit : |
Ok
Marsh Posté le 01-02-2004 à 23:32:37
Evadream -jbd- a écrit : Dans quelle mesure ce surcoût devient non négligeable ? |
Je dirais que seul le profiler peut te le dire au cas-par-cas, car un bon paquet des appels retardés sont résolus à la compilation, pour des raisons diverses. prévoir à l'avance est quasi-impossible. Comme il est plus compliqué de les éliminer que de les rajouter, il vaut mieux développer correctement, profiler et limer dans les coins ce qui dépasse.
Marsh Posté le 01-02-2004 à 23:44:58
Moi j'ai une question... est ce que Taz fait autre chose que de sortir "c'est de la merde", "c'est tres tres laid", "utilise Boost et laisse tomber le reste"... ainsi que de généralement mépriser les gens en se demandant après pourquoi il n'y à pas beaucoup de monde qui vient sur les topics [c/c++] ???
Sinon à part ca j'espère que tu es encore étudiant comme l'indique ton profil, comme ca tu as encore une chance de changer de comportement... sinon de droles de déconvenus vont te tomber dessus dans le futur.
Ah oui j'oubliais, fait attention tu forces trop sur la branlette de la norme "iso posix-gcc-2.23 bis repetita du template de la mort qui tue" et au final cela ne fait pas fonctionner un programme... d'ailleurs tu as déjà posté autre chose que 3 lignes de codes d'exemples convenus ?
Voilà c'était mon petit coup de gueule contre la mauvaise ambiance sur "programmation" et le c/c++ en particulier.
Marsh Posté le 01-02-2004 à 23:55:59
- je crois que la plus part des gens veulent du commentaire. alors je critique tant et plus. y a pas de mépris dedans. je parle du code, pas des gens.
- vas y apprends moi à vivre
- je crois pas qu'apprendre à respecter une norme et à l'exploiter soit mauvais. et ça permet au gens, surtout aux étudiants de ne pas hypothéquer leurs connaissances; et ça rends également service à celui qui étudie avec différents systèmes. Après je vois pas ce que tu me reproches: faire code élégant et qui tire partit au mieux d'un langage ? ben y a des gens qui ont envie de le comprendre. Si toi tu captes pas une ligne et que tu veux rester à ton C préhistorique, grand bien te fasse. Ne pers pas de vu que le code c'est une façon de s'exprimer. J'aime le code sémantiquement riche. Si toi t'aimes le B-A-BA, fais donc. Et oui, je fais des programmes plus gros que 3 lignes et je pense pas que mes exemples soient mauvais. Plus courts ils sont meilleurs ils sont. Et quand je donne un exemple, la vérité est que beaucoup de gens sont surpris par ça construction, ça leur permet de découvrir quelque chose, et de se familiariser avec des concepts.
Marsh Posté le 02-02-2004 à 00:13:32
taz a écrit : - je crois que la plus part des gens veulent du commentaire. alors je critique tant et plus. y a pas de mépris dedans. je parle du code, pas des gens. |
Je vais pas perdre mon temps à te répondre parce que je n'en vois pas l'intêret vu ton attitude mais :
- Oui tu aurais besoin d'apprendre autre chose que le c++ dans la vie.
- Et merci tu viens de me donner un superbe exemple de ce que tu fais généralement dans tes posts quel que soit le sujet... sinon fait attention je crois que tu commences à te prendre pour dieu.
Voilà, bonne nuit.
Marsh Posté le 02-02-2004 à 00:17:42
pour résumer taz est un puriste borné (prend ça comme tu veux )
Marsh Posté le 02-02-2004 à 00:18:29
- le fait est que je connais beaucoup d'autres choses. J'ai pas mal de connaissances en C et C++, je crois qu'il y quand même quelques personnes ici qui sont contentes de les partager.
- je me suis élevé, si l'enfant comprenait que l'étincelle est feu, il n'aurait plus jamais froid.
Marsh Posté le 02-02-2004 à 00:20:19
ReplyMarsh Posté le 02-02-2004 à 09:49:16
billyboy78 a écrit : |
hanhan ... on est sur prog@hardware ou sur psycho@feminin.com la ?
billyboy78 a écrit : |
Si ca te plait, tu reponds pas. Point.
Quand je vois les ravages de cours de C ou de C++ fait comme des branles dans les universités et/ou ecoles divers, j'estime qu'un travail comme cleuid e taz est necessaire. Si tu avais un tant soit peu de recul tu comprendrais que les remarques acerbes de taz ne vise jamais la personne mais bon ...
Marsh Posté le 02-02-2004 à 09:51:32
Joel F a écrit : j'estime qu'un travail comme cleuid e taz est necessaire. |
En tout cas ça a rendu mon code C++ moins pire : je mets moins de C dans mon C++
Marsh Posté le 02-02-2004 à 09:54:22
antp a écrit : |
antp l'a essayé t il l'a adopté
Si je pouvais geuler sur mes etudiants comme ca moi aussi ^^
Marsh Posté le 02-02-2004 à 09:55:10
antp a écrit : |
+1
Il m'a montré la voie, merci Taz
Marsh Posté le 31-01-2004 à 11:11:01
pas des trucs du genre « je capte au rien pointeurs » quand même, mais si vous avez des petites idées dans la suite des petits papiers du C++. Allez ici, que ce soit en C (C99 ) ou C++
À faire:
- streambuf: « ok, bah j'y réfléchirais, mais ça sera ètre progressif. je repartirais de la copie de fichier que j'ai montré y a quelques jours et je développerais un peu : on bricolera un petit istreambuf sur le concept source-puit, genre un streambuf rot13 »
Message édité par Taz le 02-02-2004 à 15:55:40