es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es considerado mala práctica definir funciones en archivos de encabezado?

Tenemos este archivo de encabezado:
headerA.h

#pragma once
#include <iostream>

void HeaderADefinedFunction()
{
std::cout << "¡Se llamó a HeaderDefinedFunction!\n";
}

Luego dentro del archivo sourceB.cpp

#include "headerA.h"
void FunctionB()
{
HeaderADefinedFunction();
}

Y dentro del archivo sourceC.cpp

#include "headerA.h"
void FunctionC()
{
HeaderADefinedFunction();
}

Cuáles son los aspectos negativos de definir la función HeaderADefinedFunction() en el archivo de encabezado en sí mismo. ¿Sería esa definición en una forma óptima para la resolución de símbolos en tiempo de enlace de esa función en particular?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Definir la función en el archivo de encabezado mismo puede llevar a múltiples definiciones de la función si el archivo de encabezado se incluye en varios archivos fuente. Esto puede resultar en errores del enlazador y hacer que el código sea difícil de mantener.

    Además, si la función está definida en el archivo de encabezado, se incluirá en cada archivo fuente que incluya el encabezado, incluso si la función no se utiliza en ese archivo fuente. Esto puede llevar a archivos ejecutables innecesariamente voluminosos.

    En términos de resolución de símbolos en tiempo de enlace, definir la función en el archivo de encabezado no es necesariamente óptimo. Generalmente es mejor definir la función en un archivo fuente separado e incluir el archivo de encabezado en ese archivo fuente. Esto asegurará que solo haya una definición de la función y el enlazador podrá resolver correctamente el símbolo.

Comments are closed.