Compilazione&Script passaggio di variabili

hamming_burst
Salve,
vorrei risolvere due questioni che mi son ripromesso da parecchio tempo di vedere.

    [*:1we5k7rt]Dato un codice C/C++, definto come:

    pippo.cpp
    #define EX
    #ifdef EX
    ...
    #else
    ...
    #endif

    come modifico la scelta del compilatore di definire o meno EX?

    finora mi sono arragiato con es. scrivendo un codice e modificando manualmente il codice con un #undef EX, cosa non molto comoda.

    esiste un:
    gcc EX=define pippo.cpp

    con i makefile son quasi certo sia una cosa naturale da fare, ma nell'esempio sopra come si fa?

    [/*:m:1we5k7rt]
    [*:1we5k7rt]dato uno shell script:

    pluto.sh
    #!/bin/bash
    VAR=1
    ./app ${VAR}

    come modifico da linea di comando la variabile VAR?[/*:m:1we5k7rt][/list:u:1we5k7rt]

    Ringrazio

Risposte
apatriarca
Le opzioni da linea di comando vanno gestite direttamente nel codice analizzando gli argomenti passati da linea di comando. Il processore può essere usato solo per opzioni a tempo di compilazione (quindi passando argomenti a gcc o altro compilatore).

hamming_burst
"apatriarca":
(quindi passando argomenti a gcc o altro compilatore).

certo, ma la mia domanda consta proprio su questo: quale e' la giusta sintassi per fare una compilazione condizionata da linea di comando?

apatriarca
Gestire le opzioni da linea di comando è abbastanza tedioso e macchinoso e non è per niente automatico in C/C++. Per fortuna esistono librerie per semplificare questo lavoro (soprattutto in ambiente unix dove immagino tu stia lavorando). Dai infatti un'occhiata qua. Queste funzioni sono abbastanza portabili per cui se non le trovi sul tuo sistema puoi sempre "rubarle" da qualche distribuzione opensource (qualche *BSD per esempio) senza grossi problemi. Oppure implementarle da te.

claudio862
"hamming_burst":
  • Dato un codice C/C++, definto come:

  • pippo.cpp
    #define EX
    #ifdef EX
    ...
    #else
    ...
    #endif

    come modifico la scelta del compilatore di definire o meno EX?

    finora mi sono arragiato con es. scrivendo un codice e modificando manualmente il codice con un #undef EX, cosa non molto comoda.

    esiste un:
    gcc EX=define pippo.cpp

    con i makefile son quasi certo sia una cosa naturale da fare, ma nell'esempio sopra come si fa?


Hai quasi azzeccato.

gcc -DEX main.c
gcc -DEX=7 main.c # Per dare un valore esplicito alla macro
gcc -DSUCC(x)=(x+1) main.c

gcc -DMACRO=VALUE


In realtà non credo sia definito dallo standard come passare macro al compilatore, un compilatore potrebbe usare una sintassi diversa, ma tutti quelli che conosco usano l'opzione "-D".

hamming_burst
tutto perfetto, grazie mille a tutti!! :-)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.