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

Bibliothèque standard C Discussion :

C90 et C99 [Débat]


Sujet :

Bibliothèque standard C

  1. #21
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    GCC n'est pas une fin en soit! ça n'est pas le seul compilateur, et ça n'est pas le meilleur compilateur.
    Ok, c'est vrai...

    Mais, mettons que tu développes une librairie ou un programme lambda portable que tu veuilles faire fonctionner sur quasiment toute les plateformes linux/unixes.

    Sous linux, tu as forcément un gcc.
    Sous les différents unixes, tu as forcément un cc (dont tu ne connais pas à l'avance le support pour C99) et éventuellement gcc.

    Vas tu prendre le risque que ta librairie ou ton programme ne puisse pas compiler car tu auras utilisé dans 1% de ton code des spécificités C99 ?

    Personnellement, je ne préfère pas prendre ce risque.
    Je préfère que mon code soit réellement portable sur tous les unixes quitte à me rendre la tâche moins facile dans le code.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  2. #22
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Ok, c'est vrai...

    Mais, mettons que tu développes une librairie ou un programme lambda portable que tu veuilles faire fonctionner sur quasiment toute les plateformes linux/unixes.

    Sous linux, tu as forcément un gcc.
    Sous les différents unixes, tu as forcément un cc (dont tu ne connais pas à l'avance le support pour C99) et éventuellement gcc.

    Vas tu prendre le risque que ta librairie ou ton programme ne puisse pas compiler car tu auras utilisé dans 1% de ton code des spécificités C99 ?

    Personnellement, je ne préfère pas prendre ce risque.
    Je préfère que mon code soit réellement portable sur tous les unixes quitte à me rendre la tâche moins facile dans le code.
    Entièrement d'accord.

    Citation Envoyé par nicolas.sitbon Voir le message
    Ce que tu dis n'a pas de sens, quand tu fais un malloc(), tu construis bien un tableau (dans le tas) et généralement à partir d'une variable.
    Pourquoi pas de sens VLA veut bien dire ce qu'il veut dire (Variable-Length Array). Et ce qui n'est pas bien avec cela c'est si jamais il n'y a pas assé de place pour créer ton tableau tes fichu car on est pas prévenu d'où l'intéret du malloc.
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  3. #23
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    GCC n'est pas une fin en soit! ça n'est pas le seul compilateur, et ça n'est pas le meilleur compilateur.
    Non, mais il est disponible sur toutes les plateformes que j'utilise et qui sont utilisées là où je travaille. La plupart des personnes avec qui je travaille et pour qui je travaille disposent de ce compilateur. C'est un avantage de taille. Comeau est un excellent compilateur, mais je n'ai pas l'envie d'acheter et de faire acheter partout autour de moi des licences pour Dinkumware alors que gcc + C90 fait le job et répond à nos exigences en terme de portabilité.

    gcc n'est pas une fin en soit. Ce n'est pas un outils extraordinaire non plus. C'est juste un compilateur C parmi les plus répandus à l'heure actuelle.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #24
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Vas tu prendre le risque que ta librairie ou ton programme ne puisse pas compiler car tu auras utilisé dans 1% de ton code des spécificités C99 ?
    Il est vrai que je n'ai pas problème dans mon travail, mais je pense que personnellement, si j'étais dans ce cas, j'essayerais plutôt de faire avancer les choses, par exemple, en contactant l'équipe charger du développement de GCC pour savoir pourquoi l'avancement est au point mort. 10 ans pour pondre un compilateur conforme, je trouve ça trop long sans compter le nombre d'extensions propriétaires qui n'ont rien à voir avec le standard. C'est pour cela que j'utilise Sun Studio.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #25
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par snake264 Voir le message
    Et ce qui n'est pas bien avec cela c'est si jamais il n'y a pas assé de place pour créer ton tableau tes fichu car on est pas prévenu d'où l'intéret du malloc.
    Un stack Overflow n'est pas suffisant pour toi en terme d'avertissement!
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  6. #26
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Vas tu prendre le risque que ta librairie ou ton programme ne puisse pas compiler car tu auras utilisé dans 1% de ton code des spécificités C99 ?
    . Elle me plaît bien cette question. Et ce 1% c'est généralement snprintf ... Pour ma part, si la plateforme cible est Windows uniquement, j'utilise sprintf_s (version "sécurisée" de sprintf car même _snprintf est dépréciée en faveur de _snprintf_s). Sinon, je fais aussi comme Thierry.

  7. #27
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Melem Voir le message
    Et ce 1% c'est généralement snprintf ...
    plus les commentaires C++-style
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #28
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Il est vrai que je n'ai pas problème dans mon travail, mais je pense que personnellement, si j'étais dans ce cas, j'essayerais plutôt de faire avancer les choses, par exemple, en contactant l'équipe charger du développement de GCC pour savoir pourquoi l'avancement est au point mort. 10 ans pour pondre un compilateur conforme, je trouve ça trop long sans compter le nombre d'extensions propriétaires qui n'ont rien à voir avec le standard. C'est pour cela que j'utilise Sun Studio.
    Ce n'est pas si simple que tu sembles le penser. Pondre un compilateur conforme pour une plateforme bien déterminée, c'est beaucoup de travail, mais c'est possible dans un laps de temps raisonnable et avec une équipe compétente. Avec gcc, le problème est que ce compilateur ne vise pas une seule architecture. C'est bien des problèmes de portabilité qui ralentissent le développement de ce complio. Ce n'est pas trivial d'écrire un compilateur utilisable sur pratiquement tout ce qui existe.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #29
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Il est vrai que je n'ai pas problème dans mon travail, mais je pense que personnellement, si j'étais dans ce cas, j'essayerais plutôt de faire avancer les choses, par exemple, en contactant l'équipe charger du développement de GCC pour savoir pourquoi l'avancement est au point mort. 10 ans pour pondre un compilateur conforme, je trouve ça trop long sans compter le nombre d'extensions propriétaires qui n'ont rien à voir avec le standard. C'est pour cela que j'utilise Sun Studio.
    C'est pas le fait de contacter l'équipe core de GCC qui résoudra le problème de portabilité... Car je pense qu'ils sont conscient de l'état de GCC par rapport au C99 et que d'autres personnes ont déjà du les contacter.

    Personnellement, quand je veux faire du portable, je n'utilise aucune extension quelque qu'elle soit (GCC, VS, ...) au C90.

    Le problème ne réside pas dans le fait d'utiliser tel ou tel compilo (j'utilise VS sous Windows et GCC sous linux), mais quel est le compilo disponible sur la plateforme ou sera déployée ton appli ou ta librairie !
    Et ca tu ne peux pas toujours le maitriser.
    Peux tu imposer à tes clients ou aux utilisateurs de tes produits d'utiliser Sun Studio s'ils ne l'utilisent pas ? Je ne pense pas...

    Si je prends le cas d'une de mes librairies OCILIB, en restant fidéle au C90 (et petite dérogation optionnelle C99 pour l'unicode), elle est compilable par tous les compilateurs du marché... Je ne peux imposer à mes utilisateurs d'utiliser Sun Studio sur un HP/UX 64bits par exemple...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  10. #30
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par Melem Voir le message
    . Elle me plaît bien cette question. Et ce 1% c'est généralement snprintf ... Pour ma part, si la plateforme cible est Windows uniquement, j'utilise sprintf_s (version "sécurisée" de sprintf car même _snprintf est dépréciée en faveur de _snprintf_s). Sinon, je fais aussi comme Thierry.
    Même si les versions sécurisées de la CRT de MS partent d'une bonne intention, je ne les utiliserai jamais car non standard et non portables.
    Je préfère sécuriser mon code et qu'il soit portable que de me lier à MS et lui déléguer des contrôles applicatifs
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  11. #31
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Mis à part "l'officialisation" de la gestion des caractères larges
    <HS>Si je ne me trompe pas, la gestion des caractères larges a été introduite dans le 1er amendement à C90 (C95), non?</HS>

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #32
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Un stack Overflow n'est pas suffisant pour toi en terme d'avertissement!
    Personnellement non, je n'apprécie vraiment pas certains aspect de cette norme. Hormis certaines fonctionnalité qui est propre a chacun d'aimer ou non et d'utiliser, le niveau de portabilité est affreux, j'en veux pour preuve que en cours lorsque l'on rend des projets aux profs ils n'ont pas tous le même OS et énormément d'entre nous jure aussi par le C99 et ce ramasse des mauvaises notes car le prof n'a pas réussi à le compiler soit sur gcc soit sur VS ou un autre et il ne cherche pas à corriger les fautes sa compile ta la moyenne sa compile pas c'est en dessous peut importe si le code est parfait ou non. Et je pense que c'est pareil dans le monde du travail lorsque l'on doit livrer un code et on ne sait pas sur quel système il va tourner.

    Ensuite pour ce qui est de l'implémentation dans gcc ou dans les autres je pense que si cela n'a pas été fais entièrement depuis tout ce temps c'est qu'il y a une bonne raison...
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  13. #33
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    <HS>Si je ne me trompe pas, la gestion des caractères larges a été introduite dans le 1er amendement à C90 (C95), non?</HS>

    Thierry
    En fait, C90 a introduit wchar_t, C95 a ajouté des fonctions et C99 a encore ajouté des fonctions
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  14. #34
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Personnellement, je me moque des VLA. Mais j'apprécie snprintf(), et surtout le fait qu'on ait désormais des typedefs "standard" pour des choses que chaque environnement refaisait à sa manière: Notamment le type booléen (accompagné de son en-tête stdbool.h) et les types à taille donnée (stdint.h, inttypes.h).

    Les macros variadiques peuvent être un plus, tout comme les initialiseurs de champs (plus pour les unions que pour les structures, en ce qui me concerne), mais bossant sous Visual, je m'en passe pour l'instant (pour snprintf(), je suis obligé de me faire un wrapper de _snprintf_s() et _scprintf() pour l'instant).

    Par contre, ce que je reproche aux organismes de normalisation, c'est de ne pas avoir inclus strtok_r() au standard. Mais je suis content qu'ils aient enfin déprécié gets() dans le n1256.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #35
    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 : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Un stack Overflow n'est pas suffisant pour toi en terme d'avertissement!
    Non ce n'est pas suffisant.

    Un arrêt brutal du programme en cas de manque ponctuelle n'est pas toujours la bonne solution.
    Avec malloc() si la mémoire manque, le programme est averti de l'erreur et peut prendre des mesures (nouvel essai ultérieur, libération d'autres ressources non-critiques, arrêt propre du programme, log de l'erreur, fonctionnement en mode "dégradé" sans la fonctionnalité ayant provoqué l'erreur, etc.)
    Avec unstack overflow, le programme s'arrête violemment, il est possible que ce soit suffisant dans certains, mais ce n'est pas toujours vrai (notamment sur des systèmes de sécurité ou ayant besoin d'une très grande disponibilité).

  16. #36
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par gl Voir le message
    Non ce n'est pas suffisant.

    Un arrêt brutal du programme en cas de manque ponctuelle n'est pas toujours la bonne solution.
    Avec malloc() si la mémoire manque, le programme est averti de l'erreur et peut prendre des mesures (nouvel essai ultérieur, libération d'autres ressources non-critiques, arrêt propre du programme, log de l'erreur, fonctionnement en mode "dégradé" sans la fonctionnalité ayant provoqué l'erreur, etc.)
    Avec unstack overflow, le programme s'arrête violemment, il est possible que ce soit suffisant dans certains, mais ce n'est pas toujours vrai (notamment sur des systèmes de sécurité ou ayant besoin d'une très grande disponibilité).
    Il faut faire la part des choses, généralement un stack overflow de ce type relève plus d'un problème de conception qu'autres choses.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  17. #37
    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 : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Il faut faire la part des choses, généralement un stack overflow de ce type relève plus d'un problème de conception qu'autres choses.
    Ah !
    Soit je décide donc d'utiliser les VLA et un beau jour, la création du tableau n'a pas pu se faire (taille trop importante par rapport à la mémoire libre) et bien entendu la programme n'a pas pu réagir (puisqu'il n'y a pas de retour d'information) et le programme plante. Où se situe le problème de conception (si ce n'est dans l'utilisation des VLA) ?

    Je suis d'accord que sur des machines où la mémoire disponible est surestimée par rapport aux besoins ou dans le cas de tableau de faible taille, ce problème est très peu probable mais malheureusement on ne se trouve pas toujours dans le cas idéal.

    A titre d'information, un problème similaire se pose avec l'utilisation de "l'allocateur optimiste" de Linux.

  18. #38
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par gl Voir le message
    Où se situe le problème de conception (si ce n'est dans l'utilisation des VLA) ?
    bas bêtement, ça peut être un problème de récursivité, où plus simplement de bon sens, exemple, j'alloue un tableau de 10Mo sur la pile, maintenant dans la plupart des cas, l'utilisation des VLAs peut simplifier l'écriture du code ainsi que ça maintenance (pas de problème lié à free() ). Je n'ai jamais été confronté au problème de stack overflow malgré l'utilisation intensive que je fais des VLAs, en revanche, on passe notre temps sur ce forum à corriger des problèmes d'allocations/désallocations et ça c'est un fait. Je ne dis pas que les VLAs sont LA solution miracle, mais simplement une bonne nouveauté du C99.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  19. #39
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Déjà, allouer un tableau de 10 Mo sur la pile, sous Windows, par défaut c'est mort (la pile, par défaut, fait 1 Mo).
    Donc, si tu mets, par exemple, le contenu d'un fichier dans un VLA, attends-toi à de mauvaises surprises...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #40
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Déjà, allouer un tableau de 10 Mo sur la pile, sous Windows, par défaut c'est mort (la pile, par défaut, fait 1 Mo).
    Donc, si tu mets, par exemple, le contenu d'un fichier dans un VLA, attends-toi à de mauvaises surprises...
    +1
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. devcpp et C99
    Par le y@m's dans le forum Dev-C++
    Réponses: 9
    Dernier message: 11/08/2006, 12h34
  2. Norme C90 ou C89
    Par gnto dans le forum C
    Réponses: 15
    Dernier message: 05/07/2006, 11h51
  3. Réponses: 11
    Dernier message: 12/02/2006, 21h46
  4. [INFO] C99 TC 1 & TC2 (DRAFT)
    Par Emmanuel Delahaye dans le forum C
    Réponses: 8
    Dernier message: 06/12/2005, 09h00

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