En programación informática , un encabezado de prefijo es una característica que se encuentra en algunos compiladores de C o C++ y se utiliza para garantizar que un determinado fragmento de código se inserte al comienzo de cada archivo.
En los lenguajes de programación C y C++ , un archivo de encabezado es un archivo cuyo texto es incluido en otro archivo fuente por el compilador , generalmente mediante el uso de directivas del compilador al comienzo del archivo fuente. Un encabezado de prefijo se diferencia de un archivo de encabezado normal en que el compilador lo incluye automáticamente al comienzo de cada archivo fuente, sin el uso de ninguna directiva del compilador.
Los encabezados de prefijo suelen compilarse previamente para reducir los tiempos de compilación. El uso de encabezados de prefijo fuera de este propósito puede hacer que su código sea más difícil de mantener y menos reutilizable. [1] Los encabezados de prefijo también se pueden utilizar para compatibilidad entre plataformas. En los sistemas *NIX , es común tener un archivo de encabezado config.h generado en el momento de la compilación (a través de algo como autoconf ) que describe las capacidades del sistema. Sin embargo, al usar ciertos sistemas de compilación como Visual Studio o Xcode, este config.h puede no estar disponible. Una técnica para resolver esto es hacer que HAVE_CONFIG_H sea una macro predefinida en el sistema de compilación que genere un config.h para que el código sepa si necesita #include config.h (y es seguro para su uso por sistemas de compilación que no lo tienen). Una alternativa sería que el sistema de compilación agregue config.h como encabezado de prefijo en lugar de definir HAVE_CONFIG_H. Por supuesto, la desventaja es que este encabezado se agregará a cada unidad de compilación, no solo a aquellas que lo incluyen explícitamente.
En macOS , el sistema de compilación de Xcode genera encabezados de prefijo automáticamente para nuevos proyectos. Un nuevo proyecto de Cocoa , por ejemplo, obtiene un encabezado de prefijo que se ve así:
#ifdef __OBJC__ #importar <Cocoa/Cocoa.h> #endif
Como resultado, las inclusiones explícitas de los archivos de encabezado anteriores en cualquier archivo de código Objective-C no implican una segunda inclusión debido a la #import
directiva de Objective-C, o más generalmente #include
debido al uso de protectores de inclusión ; por lo tanto, estas inclusiones se pueden olvidar, pero se recomienda [1] tenerlas escritas explícitamente para mantener el código fuente autónomo y reutilizable, y hacer que las dependencias de la biblioteca sean claras.
Se generan encabezados de prefijo similares para otros tipos de proyectos.