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

Visual C++ Discussion :

_CRT_SECURE_NO_DEPRECATE ou changer le nom des fonctions(deprecated)?


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut _CRT_SECURE_NO_DEPRECATE ou changer le nom des fonctions(deprecated)?
    Bonjour à tous,

    Je suis en train de porter des projets de Visual 6.0 a 2005 et je me demandai quel etait la meilleure solution?
    D'apres le tuto de Farscape sur le portage et la msdn quand on a des fonctions "deprecated", on peut:
    - soit renommer les fonctions dans le code(en general rajouter un '_'),
    - ou bien ajouter _CRT_SECURE_NO_DEPRECATE dans les variables de precompilaition.

    J'ai tester les deux et ca marche mais je sais pas quel est le mieux?
    Apparement le fait de rajouter _CRT_SECURE_NO_DEPRECATE supprime juste les warning de l'output, pas de modification(pas grand chose quoi).
    Alors vaut-il mieux modifier ou pas mes projets(remplacer directement les fonctions).

    A la longue, qu'est-ce qu'il vaut mieux faire?

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut, Le choix est à mettre en balance avec le coté technique et financier de l’opération :
    Le choix se résume donc à effectuer :
    • Le changement de fonctions ce qui implique : une charge de travail supplémentaire lié aux changements plus les tests à refaire derrière, pour un gain de sécurité du code accrut. ou une grosse boulette derriere ... car cette opération n'est pas sans risque.
    • Et simplement assurer le portage.( les eventuels bugs sont aussi portés )
    Le tout est donc à mettre en rapport avec le temps et le coût de l’opération….
    Si tu as du temps et que ce n’est pas pressé, donc pas de contrainte budgétaire : Adopte les nouvelles fonctions.
    Si le budget est serré, le temps est mesuré, alors assure la comptabilité : Portage simple.

    De mon expérience si le coté commercial/financier rentre en jeux le portage simple est souvent gagnant, et ce en dépit des arguments techniques..

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Argent,argent

    Mais sinon oui tu as raison ca me prendrait trop de temps de tout changer.
    Finalement je vais ecouter ton experience et appliquer la methode simple quitte a devoir modifier plus tard.
    De toute facon c'est pas la methode simple qui va me prendre le plus de temps ou alors

    Merci Farscape
    A+

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    J'ajoute un facteur à prendre en compte: La portabillité: Les fonctions "secure" de la CRT 8 ne sont disponibles que pour Windows et remplacent des fonctions standard, ton programme sera donc Windows-only.

    Et même en se cantonant à Windows, je ne sais pas si MinGW sait utilsier la CRT 8.0 (qui contient ces fonctions "secure").

    De plus, certaines des fonctions "secure" relèvent soit d'une débilité profonde, soit d'un acte délibéré de non-conformance au standard: Je pense notamment à fopen_s() et tmpfile_s() (sans compter qu'ils auraient pu donner à strtok_s() le nom standard strtok_r...).

    Et d'un autre coté, ils ne nous donnent pas les fonctions dont on a vraiment besoin, comme le vrai snprintf() standard du C99 qui accepte un buffer NULL et retourne la bonne taille...
    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    D'accord, merci pour les details mais moi il y a un truc que je comprend pas!

    Pourquoi toutes les fonctions deprecated n'ont-elles pas besoin de la meme variable de preprocessor? je suppose que les fonctions touche a des niveau different mais je trouve que c'est encore plus c***** (fastidieux) car pour chaque fonction "deprecated", ou bien faut modifier ou bien trouver le bon define (et c'est pas facile).

    Je m'explique:
    pour fopen_s il fallait mettre _CRT_SECURE_NO_DEPRECATE
    pour sprintf il faut _CRT_NON_CONFORMING_SWPRINTFS
    et pour wcsicmp ben la je sais toujours pas en fait

    Donc pourquoi Windows met en place des outils qui ne supporte pas les programmes d'avant? c'est nul!
    encore si il faut passer de dos 1.0 à XPpro je comprend qu'il faille faire des grosse modifs, mais passer de Visual 6.0 a 2005 ca devrait pas.
    Pour moi les projets V6 devrait etre compatible avec V2005.

    Enfin pas grave ca nous fait du travail

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Changer le nom des feuilles en fonction des cellules
    Par Ysae68 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2018, 00h52
  2. [JTable]Comment changer le nom des colonnes
    Par Core8 dans le forum Composants
    Réponses: 8
    Dernier message: 28/10/2009, 01h13
  3. [9i] connaitre le nom des fonctions/procédures
    Par lbgl dans le forum Oracle
    Réponses: 2
    Dernier message: 27/03/2007, 10h30
  4. [XSLT] Changer le nom des éléments...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 14/11/2005, 11h00
  5. DBGrid - changer le noms des entête de colonnes ?
    Par safab dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/11/2004, 16h49

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