En gcc
, ¿cómo puedo verificar qué definiciones de preprocesador C están en su lugar durante la compilación de un programa C, en particular qué definiciones de macro estándar o específicas de la plataforma se definen?¿Qué macros de preprocesador C ya se han definido en gcc?
Respuesta
Las macros predefinidas dependen del estándar y de la forma en que el compilador lo implemente.
Para GCC: http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html
Para Microsoft Visual Studio 8: http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx
Esta página de Wikipedia http://en.wikipedia.org/wiki/C_preprocessor#Compiler-specific_predefined_macros listas de cómo deshacerse de algunas de las macros predefinidas
Solo para registrar la respuesta: gcc -dM -E - dev/null –
Un programa puede definir una macro en un punto , elimine esa definición más tarde, y luego proporcione una definición diferente después de eso. Por lo tanto, en diferentes puntos en el programa, una macro puede tener diferentes definiciones, o no tener ninguna definición.
Una fuente probable de las macros predefinidas para una combinación específica de compilador y plataforma es Predef project en Sourceforge. Están intentando mantener un catálogo de todas las macros predefinidas en todos los compiladores de C y C++ en todas las plataformas. En la práctica, tienen cobertura de un buen número de plataformas para GCC y algunos otros compiladores.
Lo lograron mediante una combinación de lectura cuidadosa de la documentación, así como un script de shell que determina qué macros están predefinidas de la manera difícil: las prueba. Tengo entendido que realmente prueba cada cadena que puede encontrar en la imagen ejecutable del compilador y/o preprocesador para ver si tiene un significado predefinido.
Estarán encantados de agregar cualquier información que aún no tengan a su base de datos.
- 1. Preprocesador C, macros recursivas
- 2. conjunto del brazo de GCC preprocesador de las macros
- 3. C Predeterminación de prueba del preprocesador de macros múltiples
- 4. GCC preprocesador
- 5. personalizada preprocesador GCC
- 6. macros del preprocesador como parámetros a otras macros
- 7. error LNK2005: ya definido - C++
- 8. (¿Extraño?) Comportamiento del preprocesador GCC
- 9. ¿Cómo ejecuto el preprocesador GCC para obtener el código después de expandir macros como #define?
- 10. Ejecute un preprocesador "ligero" para GCC
- 11. lista de macros del preprocesador definidas por el compilador
- 12. ¿Puedo definir varias macros de preprocesador C con __VA_ARGS en el medio en lugar del final?
- 13. Macros de preprocesador de varias líneas
- 14. C macros del preprocesador - definición vs. valor de la portabilidad y la práctica
- 15. ¿Es posible que las macros del preprocesador C contengan directivas de preprocesador?
- 16. LNK2005 (ya está definido)
- 17. Error SQL C# - Parámetro ya definido
- 18. Las expresiones regulares en C preprocesador macro
- 19. ## preprocesador en C
- 20. Xcode: macros del preprocesador de código condicional debug/PRUEBA
- 21. CMake: Cómo pasar las macros del preprocesador
- 22. Preprocesador C#
- 23. Preprocesador de C++
- 24. ¿Macros de macroproducción en C?
- 25. ficha de C Constantes/Macros
- 26. advertencia GCC: ISO C no permite nombrados macros variadic
- 27. ¿Cómo puedo definir las macros de preprocesador en Xcode 4?
- 28. ¿Hay un buen método general para depurar macros de C++?
- 29. Microsoft C++ Macros predefinidas
- 30. ¿Qué significa ## para el preprocesador C (C++)?
En gcc, haga 'gcc -dM -E - dev/null'. Hay un cambio similar para MSVC pero no puedo recordarlo. –