2011-10-20 55 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文件。