Definindo uma matriz estática em um arquivo de origem C ou C ++

Eu sei que essa é uma pergunta que todo programador deve saber, mas eu não sei. Muito tempo sem programação C e eu esqueci muitas coisas.

Minha pergunta é:

Eu tenho três enormes matrizes estáticas definidas dentro de um arquivo de cabeçalho. Alguém me disse que é muito melhor declará-los comoextern no arquivo de cabeçalho e defina-os em um único arquivo de origem C ou C ++.

Como eu posso fazer isso?

Aqui está o meu arquivo de cabeçalho:

#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

Se eu usar um arquivo de origem C ++, posso precisar definir uma classe?

ATUALIZAR:
Eu acho que o problema é:
Todo arquivo de origem no qual esses cabeçalhos estão incluídos (mesmo que indiretamente) gerará sua própria definição para essas matrizes estáticas. Não há garantia de que o compilador / vinculador os otimize em uma única definição, mesmo em arquivos de origem onde eles não são utilizados. De fato, em muitos casos, o compilador não pode otimizá-los. Isso pode resultar em dados estáticos consumindo muito espaço em disco e, possivelmente, memória em tempo de execução também.

Obrigado.

questionAnswers(5)

yourAnswerToTheQuestion