Permalänk
Medlem

c++ och användning av argp.

Hej!

jag har fått en skoluppgift att använda biblioteket argp.h för att kunna ta in flagor via command line(linux) men jag sitter och läser om de och känner mig helt förvirrad av hur det funkar.. någon som har tips på toturial eller liknade?

Tack för hjälp i förhand!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem

Vad är det exakt du ska göra?
Måste väl stå mer beskrivet i uppgiften, bara att ta vidare parametrarna från main är ju inte många rader kod
Ta en till på deras hemsida?

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Datavetare

Här har du en rätt OK beskrivning om hur det fungerar: Step by step into argp [PDF]

Ett litet nonsens exempel som visar hur man kan hantera argument och använda värdet på dessa till att sätta programspecifik data skulle t.ex. kunna se ut så här i C99

#include <argp.h> #include <stdlib.h> #include <stdio.h> struct app_state { int is_kalle_set; char *pelle_arg; }; error_t parse_opts(int key, char *arg, struct argp_state *state) { struct app_state *app_s = state->input; switch (key) { case 'k': app_s->is_kalle_set = 1; break; case 'p': app_s->pelle_arg = arg; break; } return 0; } int main(int argc, char *argv[]) { struct argp_option opts[] = { { "kalle", 'k', NULL, 0, "The kalle option", 0 }, { "pelle", 'p', "pelle_arg", 0, "The pelle option, requires argument", 0 }, { NULL, 0, NULL, 0, NULL, 0 } }; struct argp a = { .options = opts, .parser = parse_opts, .args_doc = "Text printed at the end of 'Usage' line", .doc = "Text printed after 'Usage' but before first option", .children = NULL, .help_filter = NULL, .argp_domain = NULL }; struct app_state state = { .is_kalle_set = 0, .pelle_arg = NULL }; argp_parse(&a, argc, argv, 0, 0, &state); printf("kalle: %d\n", state.is_kalle_set); printf("pelle arg: %s\n", state.pelle_arg); }

Dold text

Du får ju saker som hjälp-sida och parsning av argumenten "gratis" från argp, kör du detta program med --help eller -? så skrivs följande ut

$ ./argp -? Usage: argp [OPTION...] Text printed at the end of 'Usage' line Text printed after 'Usage' but before first option -k, --kalle The kalle option -p, --pelle=pelle_arg The pelle option, requires argument -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

Dold text
Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer