Я хочу поместить определения массива в исходный файл C или C ++.
ю, что это вопрос, который должен знать каждый программист, но я не знаю. Давненько не программировал на С, и я много чего забыл.
Мой вопрос:
У меня есть три огромных статических массива, определенных в заголовочном файле. Кто-то сказал мне, что лучше объявить ихextern
в заголовочном файле и определите их в одном исходном файле на C или C ++.
Как я могу это сделать?
Вот мой заголовочный файл:
#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
Если я использую исходный файл C ++, могу ли я определить класс?
ОБНОВИТЬ:
Я думаю, что проблема заключается в:
Каждый исходный файл, в который включены эти заголовки (даже косвенно), будет генерировать свое собственное определение для этих статических массивов. Нет гарантии, что компилятор / компоновщик оптимизирует их в одно определение, даже в исходных файлах, где они не используются. Фактически, во многих случаях компилятор не может их оптимизировать. Это может привести к тому, что ваши статические данные будут занимать много места на диске, а также, возможно, оперативную память.
Спасибо.