Tôi chỉ muốn biết nếu tôi có thể làm điều gì đó như thế ...Tôi có thể trả về cấu trúc khởi tạo trên một dòng trong ANSI C không?
typedef struct Result{
int low, high, sum;
} Result;
Result test(){
return {.low = 0, .high = 100, .sum = 150};
}
Tôi biết đó là một cách sai lầm, nhưng tôi có thể làm điều đó hay tôi cần phải tạo ra một biến địa phương để nhận được các giá trị và sau đó trả lại?
Phương pháp này dẫn đến ram được phân bổ bởi trình biên dịch, giữ cấu trúc 'Kết quả', nơi các trường được sao chép ban đầu, sau đó sao chép lại đối tượng người gọi của cấu trúc 'Kết quả'. Hai bản sao và phân bổ cấu trúc kết quả là RAM thật và bộ xử lý chu kỳ CPU. – user3629249
@ user3629249: Nhưng chúng có thể được tối ưu hóa và cụ thể là ABI. Trên Linux/x86-64 một hai trường 'struct' thường được trả về trong hai thanh ghi. –