2011-10-20 51 views

回答

4

这使用预处理器来初始化一个数组。

它基本上内嵌了用数值填充数组的代码,通过从外部文本文件读取它。请注意,这需要“normals.txt”充满匹配C语法该值,即:

{0, 0, 1}, 
{0, 1, 0}, 
{1, 0, 0} 
+0

OMG ....它读取“normal.txt”并填充“法线[] []”?不要说是... – hari

+1

@hari:是的 - 它只是使用该文件的文件内容并将其“转储”到源代码中,inline ... –

+0

您可能想要补充的是,预处理是之前完成的步骤编译,以避免与运行时加载文件混淆。 :)这个“技巧”对导入(例如生成的)数据是很有用的,因为只有在开发应用程序时才会改变数据,因为在编译时,数据会静态编译到可执行文件中,并且不会再发生变化,即使输入文件本身变化。 – CodeCaster

0

2D阵列被初始化与该文件“normals.txt”的内容,这大概包含有效C代码,并可能与其他代码共享或者是其他软件的输出。

0

使用预处理指令#include将就地粘贴它引用的文件中的任何代码...因此,“normals.txt”中的任何内容都将被格式化为适合数组初始值设定项的有效C语法代码列表为normals

因为预处理发生在实际编译步骤之前,所以这将创建有效的C代码来初始化二维数组,而无需编码器在实际的.c文件中创建大量文本来初始化数组的值。

0

这使得丑陋的代码。一个更简洁的选择是让生成normals.txt文件的任何东西生成一个具有完整数组声明的.c文件。