È possibile indicare a GCC di compilare il codice sorgente e ignorare macro come __FILE__
, __LINE__
, ecc. Ecc. O ridefinirle per estendere, diciamo, una stringa vuota?Ignorare o ridefinire macro standard predefinite GCC
risposta
Come per ogni macro si può semplicemente utilizzare:
#undef __LINE__
#undef __FILE__
e poi li si può ridefinire.
È anche possibile passare -U macroname
a undef un nome macro e -D macroname=definition
per definire un nome di macro per le opzioni gcc
.
Si noti che, come indicato in un'altra risposta, l'annullamento o la ridefinizione di __LINE__
o __FILE__
in C richiama il comportamento non definito.
Ho il sospetto che ciò provochi UB. Si prega di vedere la mia risposta su questo. – alk
@alk d'accordo, lo fa. – ouah
@alk ma penso che la citazione pertinente sia questa: * (c99, 6.10.8p4) "Nessuno di questi nomi di macro, né l'identificatore definito, deve essere oggetto di una direttiva #define o di preprocessing #undef. * – ouah
- 1. Macro predefinite Microsoft C++
- 2. Librerie predefinite collegate da gcc?
- 3. Ridefinire macro lattice utilizzando lo stesso nome
- 4. come ridefinire una macro utilizzando la sua precedente definizione
- 5. Come impostare macro predefinite in Code :: Blocks
- 6. Conformità standard C++ nell'AVR-GCC
- 7. Le macro Variadic non sono standard?
- 8. Posso ridefinire una macro C++ e poi definirla?
- 9. Come ridefinire una macro #define in C++ utilizzando le informazioni della macro stessa?
- 10. Come faccio a sapere "le directory di inclusione predefinite", "le directory di collegamento predefinite" e le "librerie di collegamento predefinite" di gcc, g ++/C++ in Ubuntu 11.04?
- 11. La macro di Gnu C++ è conforme allo standard __cplusplus?
- 12. Così tante parentesi nelle intestazioni standard di gcc
- 13. Come sovrascrivere le opzioni gcc predefinite nel linker?
- 14. È prudente ignorare l'avviso "-Smissing-braces" di gcc/clang?
- 15. jinja2: macro selezione macro o chiamate macro dinamiche
- 16. Macro predefinita C++ 11
- 17. C++ 11 gcc: qualifica esplicita in dichiarazione? Riferimento standard?
- 18. Macro o equivalente in reStructuredText?
- 19. Macro per GCC/G ++ per differenziare Linux e Mac OSX?
- 20. Rileva gcc in contrapposizione a msvc/clang con macro
- 21. GCC o make flag per proibire particolari funzioni della libreria standard
- 22. Per che cosa è la macro WITH-STANDARD-IO-SYNTAX?
- 23. Vim: ridefinire un comando
- 24. Quali macro del preprocessore C sono già state definite in gcc?
- 25. Opzioni GCC per far rispettare il controllo standard Ansi C?
- 26. LaTeX: ridefinizione temporanea della macro di citazione
- 27. fusi moltiplicano aggiungere e arrotondamento predefinite Modalità
- 28. Macro di espansione per le macro con argomenti contro variabili con lo stesso nome
- 29. Preprocessore C Macro di definizione macro
- 30. C/C++ definizioni di macro fredde?
davvero una cattiva idea, perché vorresti questo? Un sacco di codice (comprese le intestazioni di sistema) dipenderà da questi per fare la cosa giusta. Questo è solo in cerca di guai. –
Perché vorresti farlo? perché: 1. Lo standard C proibisce di ridefinirle/definirle 2. Sostituire '__LINE__' con come' 0' o '-1' sembrerebbe imbarazzante (è un valore intero e devi dare qualcosa, diversamente dalla stringa vuota per' __FILE__') 3. Il loro scopo principale * è * di aiutare il debug (se non li vuoi, perché li usi in primo luogo?). Quindi sembra che l'unico modo sia di riscrivere il tuo codice se non li vuoi o meglio tenerli! –