所以說我想為一個我想用隨機坐標渲染的形狀初始化一個新的vec3結構;在現代C中,代碼看起來像結構vec3 coordinates = { rand_pos(), rand_pos(), rand_pos() };。然而,C90的情況并非如此,它需要編譯時常量來初始化結構。
我所能想到的唯一解決方案是在堆上malloc該結構,初始化其成員,并回傳其解除參考的值return *coordinates。 然而,由于我沒有回傳一個指標--而且我不應該回傳一個指標--這使得API看起來模糊不清,因為我仍然需要free這個結構。但是我將傳遞一個address而不是一個pointer給free,這不符合API指南。
uj5u.com熱心網友回復:
沒有什么可以阻止你在沒有初始化的情況下定義struct(或使用編譯時常量),并在之后分配所需的值。初始化和賦值是不一樣的,所以任何編譯器都會接受這一點
struct vec3 coordinates;
coordinates.x = rand_pos();
coordinates.y = rand_pos();
coordinates.z = rand_pos()。
return coordinates;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/334257.html
標籤:
