He tenido problemas en el pasado cuando intenté portar algún código de C++ escrito en Mac OS X a un sistema Linux, o tratando de compilar código escrito en una versión anterior de gcc/g ++ con uno nuevo:¿Cómo puedo controlar la forma en que gcc/g ++ incluye automáticamente los encabezados?
Parece que algunas versiones (más antiguas?) De gcc/g ++ incluirían automáticamente algunos archivos de encabezado para usted.
Por ejemplo, el código que usa printf
debe requerir #include <stdio.h>
. Y el código que usa memcpy
debe requerir #include <string.h>
. Pero dependiendo de la versión de gcc que estoy usando, ocasionalmente incluirá estos para mí.
Causa estragos cuando olvido incluir algo y luego nunca obtienes los errores hasta que voy a compilar el código en otro sistema. En ese punto, es un juego de correr por todo el proyecto y arreglar los includes.
¿Alguien más se ha topado con esto? ¿Hay alguna manera de forzar que gcc se incluya automáticamente o no se incluya automáticamente? O bien, ¿hay alguna manera de saber qué es autoincluding?
Puede ser, si gcc lo hace automáticamente se convertiría en demasiado sutiles para que pueda entender los métodos mismos nombres en diferentes bibliotecas. Pero si hay alguna solución automática me gustaría saber. –
¿Estás seguro de que no son otros encabezados los que tiran de ellos, y en otras plataformas no lo están haciendo? –
gcc no incluye "autoinclude" - probablemente solo esté obteniendo indirectos incluye a través de encabezados que ha incluido explícitamente #, como sugiere Preet anteriormente. En resumen: necesitas arreglar tu código. –