Bạn có thể sử dụng:
GLfloat coordinates[8] = {1.0f, ..., 0.0f};
nhưng đây là một khởi tạo thời gian biên dịch - bạn không thể sử dụng phương thức đó trong tiêu chuẩn hiện hành để khởi tạo lại (mặc dù tôi nghĩ có nhiều cách để làm điều đó trong tiêu chuẩn sắp tới, có thể không giúp bạn ngay lập tức).
Hai cách khác mà mùa xuân suy nghĩ là để Blat các nội dung nếu họ đang cố định:
GLfloat base_coordinates[8] = {1.0f, ..., 0.0f};
GLfloat coordinates[8];
:
memcpy (coordinates, base_coordinates, sizeof (coordinates));
hoặc cung cấp một chức năng đó giống như mã khởi động của bạn anyway:
void setCoords (float *p0, float p1, ..., float p8) {
p0[0] = p1; p0[1] = p2; p0[2] = p3; p0[3] = p4;
p0[4] = p5; p0[5] = p6; p0[6] = p7; p0[7] = p8;
}
:
setCoords (coordinates, 1.0f, ..., 0.0f);
giữ trong tâm trí những dấu chấm lửng (...
) là trình giữ chỗ, không phải những thứ để chèn vào mã.
Bạn đang trả về một con trỏ đến một biến địa phương, có? Một số trong những điều mọi người đã nói trong câu trả lời/bình luận dưới đây giả định rằng các biến có liên quan là tự động hóa, hoặc rằng họ không. Có thể giúp nếu bạn chỉ định. –
Khi cấu trúc được khởi tạo, không có cách nào dễ dàng để gán khối lượng thành viên (trừ việc tạo bản sao của một cấu trúc khác với 'memcpy'). Tôi thường thấy mình muốn tôi có tính năng này. – bta
Tôi nghĩ rằng câu trả lời ban đầu của bạn là tốt nhất - nó trực quan, mặc dù một chút tiết, nhưng đó không phải là một mối quan tâm cho các trình biên dịch hiện đại. –