ho bisogno di scrivere un tale definiscono in C/C++utilizzo #define in C/C++
#define scanf(fscanf(inf,
al fine di sostituire ogni scanf(
con fscanf(inf,
letteraria
Ma io non so come ...
Grazie
ho bisogno di scrivere un tale definiscono in C/C++utilizzo #define in C/C++
#define scanf(fscanf(inf,
al fine di sostituire ogni scanf(
con fscanf(inf,
letteraria
Ma io non so come ...
Grazie
si desidera utilizzare un Variadic macro.
Nel tuo caso, credo che si desidera:
#define scanf(...) fscanf(inf,__VA_ARGS__)
Si noti che questo non è portatile. –
Questo potrebbe funzionare. –
@Brian: è nella bozza C++ 0x e supportato da GNU, Intel e Microsoft, quindi almeno su x86 lo considererei abbastanza portatile per la maggior parte degli scopi – Christoph
Non è possibile sostituire una parentesi. Se si utilizza Visual C++, quindi è possibile utilizzare una macro variadic per compiere ciò che si desidera:
#define scanf(format, ...) fscanf(inf, format, __VA_ARGS__)
altri compilatori possono avere una struttura simile, ma io non sono a conoscenza.
È standard C99. §6.10.3.1 –
Color me sorpreso. Grazie per il chiarimento. –
C99 standard per quanto ne so. – ShinTakezou
impossibile il modo in cui hai provato, naturalmente.
si hanno a che fare le cose come
#define scanf(S, ...) fscanf(inf, S, __VA_ARGS__)
Vedi esempio here
MODIFICA: GNU cpp supporta anche macro variadiche; è VA_ARGS preceduto da doppia sottolineatura e si è conclusa con la doppia sottolineatura ... devo studiare fuggire markup qui ...
Testo surround con apici inversi per creare codice inline. È il modo migliore per scrivere '__VA_ARGS__' nel mezzo di un paragrafo. ;) –
Basta scrivere tutto il codice utilizzando fscanf, e definire il nome del file con una macro come questa:
#ifdef USE_SCANF
#define SCANF_FILE(file) stdin
#else
#define SCANF_FILE(file) file
#endif
fscanf(SCANF_FILE(blah), "%d", &a);
ho bisogno di scrivere un tale definiscono in C++
No, non lo fai. Quello che vuoi veramente è reindirizzare stdin
.
freopen(inf, "r", stdin);
Basta dire no a tale uso di macro. –
@Brian È più di curiosità che uso ... – Betamoo
C o C++, e quale compilatore? –