Forum Programmation.c++ Paramètres d'un programme

Posté par (page perso) .
Tags : aucun
3
15
mar.
2011

Bonjour,

Petite question, je n'ai pas trouvé de document "officiel" mais existe-t-il une spécification pour le format à utiliser pour le passage des paramètres à un programme. (ex: "--param1 valeur1", etc.)

Connaissez-vous un document/site qui donne une spec complète ? merci

  • # Pas de normes, seulement des conventions

    Posté par . Évalué à 6.

    Et pour connaitre la convention la plus utilisée sous unix, je t'encourage à regarder ce qui est digéré par getopt (man 1 getopt et man 3 getopt).

  • # Mhhh...

    Posté par (page perso) . Évalué à 1.

    Vu qu'aucun programme ne semble s'accorder sur la manière de passer les paramètres, j'aurais tendance à dire qu'une telle spec n'existe pas!

    Dans mes programmes C++, j'utilise boost::program_options, et je le laisse se débrouiller.

  • # pas de convention officielle, mais quelques habitudes

    Posté par . Évalué à 3.

    -h | --help : pour afficher l'aide
    -o <valeur> | --options <valeur> : pour mettre l'option=valeur

    avec parfois une variante

    --options=<valeur>

    mais ca reste à l'appreciation du developpeur.

  • # gnu

    Posté par . Évalué à 4.

    Il existe une norme gnu sur le sujet.

    En gros "-x" pour une option à un seul caractère. "--help" pour un mot, etc...

    "La première sécurité est la liberté"

    • [^] # Re: gnu

      Posté par . Évalué à 4.

      C'est défini dans les codings standards GNU (http://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html#Command_002dLine-Interfaces)

      Effectivement, même si la norme Posix définit un modèle de gestion de la ligne de commande (man 3p getopt), c'est très limité: pas d'options longues qui sont très pratiques pour l'auto-documentation mais qui sont une extension GNU et plus ou moins rentrée dans les moeurs (info getopt_long -la page info propose également un exemple d'utilisation-).

      En C++, Boost.Program_options permet de gérer de manière cohérente et très élégante la ligne de commande (fonction de callbacks, génération automatique de l'aide etc ...) ainsi que les variables d'environnements ou un fichier de configuration. Sauf si on ne peut pas faire autrement, éviter de parser à la main argv ce qui est bien cracra et pas super maintenable à long terme.

  • # POSIX (enfin je crois)

    Posté par . Évalué à 4.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.