Red de conocimiento informático - Conocimiento informático - Cómo solucionar el error de definición múltiple que ocurre al compilar en Linux

Cómo solucionar el error de definición múltiple que ocurre al compilar en Linux

Causa del problema:

Cuando varios archivos contienen el mismo archivo de encabezado y no especifica el archivo de encabezado en .H

#ifndef TEST_H

#define TEST_H

#endif

, se interpretará de forma independiente y cada archivo generará un identificador separado. Cuando el compilador se vincula, consolida todos los símbolos del proyecto y, debido a la presencia de variables renombradas en el archivo, se produce un error de definición duplicada.

Método 1:

Normalmente, la compilación condicional se debe agregar a cada archivo de encabezado para evitar múltiples interpretaciones si se hace referencia al archivo varias veces. Este enfoque puede resolver la mayoría de los problemas de bajo nivel.

Método 2:

Cuando el método 1 no funciona, coloque todas las variables globales en el archivo de encabezado global.h (nómbrelo como quiera, pero agregue compilación condicional) y agregue en Agregue una declaración externa antes de cada variable para indicar que estas variables se definirán en otros archivos. Luego cree un archivo .c o .cpp correspondiente al nombre del archivo de encabezado, como global.c. Por ejemplo: void(*Handl_Display)();

Luego, deje que el archivo que involucra variables globales incluya "global.h". Esto compilará global.c para generar global.o, que luego se vinculará con el .o de otros archivos para generar un archivo ejecutable.

Método 3:

Método diferido: agregue estática antes de todas las variables globales y declarelas como estáticas. Esto también resolvió el problema.