我知道这是每个程序员都应该知道的问题,但我不知道。很久没有进行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++源文件,我是否需要定义一个类?
更新:
我认为问题是:
包含这些头文件的每个源文件(甚至是间接包含的)都将生成自己的定义,这些静态数组的定义。没有保证编译器/链接器将它们优化成单个定义,即使在未使用它们的源文件中也是如此。事实上,在许多情况下,编译器无法将它们优化掉。这可能会导致您的静态数据消耗大量磁盘空间,并可能消耗运行时内存。
谢谢。