Definir una matriz estática en un archivo fuente C o C ++

Sé que esta es una pregunta que todo programador debería saber, pero no lo sé. Mucho tiempo sin programación en C y me he olvidado de muchas cosas.

Mi pregunta es:

Tengo tres grandes matrices estáticas definidas dentro de un archivo de encabezado. Alguien me dijo que es mucho mejor declararlos comoextern en el archivo de encabezado y defínalos en un solo archivo fuente C o C ++.

¿Cómo puedo hacer eso?

Aquí está mi archivo de encabezado:

#ifndef _TEMPLE_OBJECT_H_
#define _TEMPLE_OBJECT_H_


#define NUM_TEMPLE_OBJECT_VERTEX 10818

static const float TEMPLEVertices[NUM_TEMPLE_OBJECT_VERTEX * 3] = {...};
static const float TEMPLENormals[NUM_TEMPLE_OBJECT_VERTEX * 3] = {...};
static const float TEMPLETexCoords[NUM_TEMPLE_OBJECT_VERTEX * 3] = {...};

#endif

Si uso un archivo fuente C ++, ¿puedo necesitar definir una clase?

ACTUALIZAR:
Creo que el problema es:
Cada archivo fuente en el que se incluyen esos encabezados (incluso indirectamente) generará su propia definición para esos arreglos estáticos. No hay garantía de que el compilador / enlazador los optimice en una sola definición, incluso en los archivos fuente donde no se usan. De hecho, en muchos casos el compilador no puede optimizarlos. Esto podría provocar que sus datos estáticos consuman mucho espacio en disco y posiblemente también memoria de tiempo de ejecución.

Gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta