elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  extension .inl y .hpp
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: extension .inl y .hpp  (Leído 2,654 veces)
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
extension .inl y .hpp
« en: 16 Septiembre 2021, 03:42 am »

Buenas estimados.

Estoy estudiando un libro de SFML, y en una de sus paginas al usar plantillas para cargar recursos menciona que cuando se trabaja con plantilla de clases es bueno renombrar la cabecera a .hpp y las definiciones de los metodos en .inl .. incluyendo dicho .inl al final del .hpp

El libro no explica claramente el por qué.
Se debe esto a alguna convencion o tiene un significado objetivo?


saludos y gracias.


En línea

Dungeons & dragons;
dragons.Attack();
RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: extension .inl y .hpp
« Respuesta #1 en: 17 Septiembre 2021, 00:40 am »

Esas extensiones no tienen nada de especial, simplemente hay quienes las usan para hacer explícitas ciertas cosas.

Como sabrás, en C++ es común poner las declaraciones de funciones (y las "interfaces" de clases) en archivos de cabecera .h, y las implementaciones o definiciones en .cpp. Las cabeceras se incluyen con directivas #include , y los .cpp se compilan individualmente, y los archivos compilados resultantes se enlazan para formar el archivo final, por ejemplo .exe. Con las plantillas no se puede hacer eso, sino que también las definiciones se deben incluir en los archivos fuente como si se tratara de cabeceras (esto no es totalmente cierto, y en realidad es más complejo, pero es "correcto" de forma general). La opción más obvia sería poner las definiciones directamente en las cabeceras, pero normalmente es preferible hacer la separación de interfaz e implementación, aunque sea sólo por legibilidad. Otra forma de hacerlo es seguir separando el código con plantillas en cabeceras y  archivos .cpp, pero incluir los propios .cpp con directivas #include, justo como con los .h. Sin embargo, esto podría prestarse a confusiones. Un programador que reciba archivos .cpp y .h, podría suponer que los .cpp se deben compilar por separado, como es lo normal, pero dado que estamos hablando de plantillas, eso sería incorrecto. Si, en cambio, se usa otra convención, es posible evitar esas ambigüedades. En este caso, se supone que si el programador ve archivos .inl, sabe que no debe incluirlos para compilarse en el proyecto, sino simplemente usar las cabeceras que desee (las cuales a su vez se encargan de incluir las implementaciones, dado que son .hpp), y ya está.

Esto no es algo generalizado, y no todos lo usan, ni lo conocen. Al final da igual la convención que se use, siempre que todos los que vayan trabajar en un proyecto la conozcan y se apeguen a ella, así que no le veo mucho sentido a recomendar o no su uso. Es simplemente una opción.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extensión .smc
Juegos y Consolas
Sakura85 2 3,691 Último mensaje 23 Febrero 2004, 16:25 pm
por Sakura85
Extensión .mpc
Multimedia
Sakura85 4 3,378 Último mensaje 12 Marzo 2004, 16:41 pm
por Sakura85
Extension MDS
Juegos y Consolas
TRON1 1 1,568 Último mensaje 16 Febrero 2005, 22:14 pm
por DJ46
extension CBR
Software
aliteroid 1 7,593 Último mensaje 6 Mayo 2006, 23:04 pm
por andavid
extension *.daa
Software
Division-x 3 3,626 Último mensaje 1 Marzo 2007, 20:25 pm
por Division-x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines