IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Classes et Structures (C++)


Sujet :

C++

  1. #61
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Ce qu'il faut comprendre, c'est que la possibilité offerte par VC++ qui utilise __declspec( align( XXX ) ) et celle offerte par Gcc qui utilise __attribute__((__aligned__(YYY))) ont strictement le même effet, à savoir celui d'aligner les données sur le nombre de byte indiqué...
    Merci pour ces informations, mais relis mes messages précédents. J'ai compris depuis longtemps l'aspect pratique de cette norme pour les développeurs multiplateformes.

  2. #62
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Citation Envoyé par Arzar Voir le message
    Bonjour,

    Qu'est-ce que tu entends par "une définition pour les OS de comment aligner les données ?
    En fait je suis en train de me dire que moldavi tu parles de l'alignement qu'imposent certaines architectures (pas cote languages donc).

    Note que generalement ca ne viens pas de l'OS mais du hardware (la memoire ou le processeur ou la combinaison des deux) qui est juste plus rapide si les memoires sont alignees d'une certaine facon, ou encore qui ne s'executera carrement pas correctement.

    Ca ne se decide pas dans le code de l'OS. L'OS au mieux pourra faire des verifications au runtime pour eviter de crasher toute la machine, mais c'est tout. La convention est induite par la machine et c'est le compilateur qui connait l'architecture en question et qui va faire son possible pour que ca rentre dans ce que l'architecture accepte.

    Sauf si tu precises a la main que ut veux un alignement precis. Auquel cas tu utilises les commandes dont on parle.

  3. #63
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Merci pour ces informations, mais relis mes messages précédents. J'ai compris depuis longtemps l'aspect pratique de cette norme pour les développeurs multiplateformes.
    Ok mais ce qu'on comprends pas c'est pourquoi tu pointes le fait qu'asignas est un mot clee. Oui c'est un mot clee. Ou est le probleme?

  4. #64
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Ok mais ce qu'on comprends pas c'est pourquoi tu pointes le fait qu'asignas est un mot clee. Oui c'est un mot clee. Ou est le probleme?
    L'idée pour résumer, c'est que cette norme n'a rien à spécifier sur l'alignement, parce qu'elle n'invente rien. L'alignement ce sont des données contigües en mémoire. Donc cette norme ne fait que préciser, pas spécifier. On l'a pas attendu pour dire ce qu'était l'alignement de données. Elle ne fait que préciser, pas spécifier. Elle parle peut-être même d'une chose qui existait avant le langage C++.

    Vous allez me dire, oui mais c'est le but d'une norme. Sauf que là, les OS/compilateurs ont précédé la norme. La norme ne fait que s'adapter à la pratique.

    Dans cette situation là, la norme ne fait que des choses pour faciliter la vie du développeur (elle institue un mot-clé). Elle s'adapte aux pratiques courantes des compilateurs. Elle n'invente rien.

    Donc personnellement, je n'appelle pas cela de la spécification, mais de l'adaptation. C'est aussi le rôle que j'attends d'une norme : facilité la vie des développeurs.

  5. #65
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Oui, la norme n'a rien invente, c'est pareil pour toutes les features, elles ne fais que les normer, les standardiser, ces pratiques existantes et repandues (meme les lambdas par exemple).

    Mais quel est le probleme avec ca?

  6. #66
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Mais quel est le probleme avec ca?
    Le problème, je crois, c'est que l'on a cherché à décridibilisé mon discours avec comme argument la norme. Alors que je ne parlais que de pratique...

  7. #67
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Le problème, je crois, c'est que l'on a cherché à décridibilisé mon discours avec comme argument la norme. Alors que je ne parlais que de pratique...
    Ce n'est pas cela du tout, mais il faut comprendre aussi le fonctionnement de la norme (du moins de la norme C++).

    Avant qu'il n'y ait la norme, il y a une évolution dans la manière d'envisager la conception et la programmation, une nouvelle idée, un nouveau concept (un nouveau langage).

    cette "nouveauté" peut être (ou non) implémentée de "n'importe quelle manière" par le compilateur, sous la forme de ce que l'on pourrait plus ou moins appeler "une extension".

    C'est ce qui fait que VC utilise __declspec et que Gcc utilise __attribute__.

    Tot ou tard, on se rend compte qu'une possibilité (quelle qu'elle soit) est généralisée, mais que chaque compilateur l'implémente "à sa sauce" et que les différentes implémentations sont faites de manière "décousues" (comprend :sans qu'il n'y ait la moindre concertation entre les différents éditeur de compilateur quant aux noms utilisés ou aux comportements observés).

    La norme apporte donc un formalisme indiquant clairement quelle fonctionnalité doit être proposée, sous quel nom, ainsi que les comportements qu'elle doit proposer.

    A partir de là, les compilateurs qui prétendent respecter la norme sont obligés de fournir la fonctionnalité telle que décrite par la norme.

    Or, l'alignement des données en mémoire n'est, sommes toutes, qu'un aspect purement et simplement marginal d'un aspect beaucoup plus global qui est le modèle mémoire utilisé par C++, qui a été normalisé dés le début!

    On peut trouver quantité de raisons au fait que le mot clé alignas n'est apparu qu'en C++11, mais cela ne change rien au fait, tout ce que tu as dit (à part le fait que l'on ne peut pas aligner les arguments d'une fonction) est totalement faux:

    • On peut aligner tout aussi bien des structures que des classes (ou meme des unions), et ce, même si l'habitude de x ou de y tend plus ou moins à n'aligner que des structures
    • Le fait qu'une fonction aie recours à l'allocation dynamique de la mémoire n'empêche absolument pas l'alignement des données
    • L'accessibilité des données n'a strictement rien à voir avec l'alignement des données en mémoire
    • La présence (ou l'absence) de fonction(s) membre(s) ne joue absolument pas sur la capacité d'aligner les données en mémoire

    Cela fait maintenant près de 60 messages que l'on te dis que presque tout ce que tu déclares est erroné, et tu essayes malgré tout de te contorsionner comme un chat afin de retomber sur tes pattes.

    Il ne faut donc pas forcément t'étonner si tes propos sont réfutés
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #68
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par koala01 Voir le message
    Citation Envoyé par germinolegrand Voir le message
    J'aimerais beaucoup voir le passage de la norme qui certifie une telle chose...
    Tu peux toujours le chercher... il n'existe pas
    Flob90 nous a fournit un lien qui montre que cela existe... Je veux bien que tu me donnes des cours sur la norme C++, ce n'est pas inintéressant. Mais il faudrait que je sois certain que tu maîtrises le sujet pour te faire confiance.

    Sinon je suis comme un chat, c'est vrai, mais pas pour le contorsionnisme, plutôt pour l'indépendance (d'esprit) et la paresse.

  9. #69
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Flob90 nous a fournit un lien qui montre que cela existe...
    A quoi fais-tu exactement allusion ici ? Car je ne vois rien dans les propos de Flob90 qui appuie ton propos initial.

  10. #70
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Flob90 nous a fournit un lien qui montre que cela existe... Je veux bien que tu me donnes des cours sur la norme C++, ce n'est pas inintéressant. Mais il faudrait que je sois certain que tu maîtrises le sujet pour te faire confiance.
    Je te prie de ne pas détourner mes propos

    Je ne vois rien dans les éléments que j'ai cité quelque-chose que va dans le sens :
    Citation Envoyé par moldavi Voir le message
    on peut aligner (niveau mémoire) une structure, mais pas une classe.
    Qui était l'assertion à laquelle s'opposait Koala01 et Germinolegrand.

    Mon message s'opposait aussi à ton assertion :
    Citation Envoyé par moldavi Voir le message
    [...] je ne vois pas à quel moment la norme définit comment aligner les données. [...] pas une définition pour les OS de comment aligner les données.
    Alors oui c'est un mot-clé, oui la norme explique comment ce mot-clé doit impacter le codé généré par rapport au modèle mémoire du C++. Le lien OS <-> code est fait par le compilateur, c'est un peu le principe d'un compilateur.

  11. #71
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par gl Voir le message
    A quoi fais-tu exactement allusion ici ? Car je ne vois rien dans les propos de Flob90 qui appuie ton propos initial.
    Franchement, je suis ouvert à la discussion. Mais là cela devient lourd.

    Citation Envoyé par moldavi Voir le message
    Flob90 nous a fournit un lien qui montre que cela existe...
    Là je dis que Flob90 nous a fournit un lien... C'est tout... Je répète.. Flob90 nous a fournit un lien qui montre que la norme nous parle d'alignement.

    Dis-moi où je dis que Flob90 appuie mon propos initial ? Tu ne peux pas. Voilà ce à quoi je bataille depuis 60 messages, dixit un posteur.

    Je cherche la phrase où je dis que Flob90 est 100% d'accord avec moi, je ne la trouve pas...

    Désolé mais pour moi la discussion est close.

  12. #72
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Il y a un point sur lequel on est d'accord : ça devient lourd.

    Je pense que le tour de la question de la différence entre struct et class a été fait. Le lecteur intéressé pourra se faire sa propre opinion en lisant les 4 pages de discussion (ou juste la première réponse, qui répondait déjà à la question). Il n'est donc pas nécessaire de continuer plus en avant une discussion qui risque de tourner aux argumentations personnelles...

    Merci

  13. #73
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Non mais c'était une vraie question de ma part, rien de plus.

    Citation Envoyé par moldavi Voir le message
    Là je dis que Flob90 nous a fournit un lien... C'est tout... Je répète.. Flob90 nous a fournit un lien qui montre que la norme nous parle d'alignement.

    Dis-moi où je dis que Flob90 appuie mon propos initial ? Tu ne peux pas. Voilà ce à quoi je bataille depuis 60 messages, dixit un posteur.

    Je cherche la phrase où je dis que Flob90 est 100% d'accord avec moi, je ne la trouve pas...

    Désolé mais pour moi la discussion est close.

    Vous en pensez ce que vous voulez, mais vous avez un gros problème d'ouverture d'esprit...
    C'est ce que j'avais compris dans ton message à cause de :

    Citation Envoyé par koala01
    Citation Envoyé par germinolegrand
    J'aimerais beaucoup voir le passage de la norme qui certifie une telle chose...
    Tu peux toujours le chercher... il n'existe pas
    Citation Envoyé par moldavi
    Flob90 nous a fournit un lien qui montre que cela existe...
    Mais si tu voulais juste dire que Flob avait fourni un lien sur le draft de la norme, alors OK.

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [Débutant] Classe ou structure
    Par cyrill.gremaud dans le forum C#
    Réponses: 1
    Dernier message: 14/01/2013, 08h58
  2. [VB.NET] Privilégier une classe à une structure ou inversement ?
    Par Jean-Philippe André dans le forum Débuter
    Réponses: 2
    Dernier message: 27/02/2012, 08h47
  3. Organisation d'un programme (Class et Structures)
    Par le_binr dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/12/2011, 10h12
  4. Classe ou structure ?
    Par tintin72 dans le forum Débuter
    Réponses: 9
    Dernier message: 20/11/2008, 19h26
  5. Réponses: 6
    Dernier message: 26/06/2006, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo