Khi nghi ngờ, hãy kiểm tra đầu ra của trình lắp ráp. Ví dụ: viết một đoạn mã nhỏ, tối thiểu, tức là như thế này
#import <Cocoa/Cocoa.h>
void test() {
CGRect r = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
NSLog(@"%f", r.size.width);
}
Sau đó, biên dịch nó sang trình hợp ngữ với -Stùy chọn.
gcc -S test.m
Lưu đầu ra của trình hợp dịch trong test.stệp và xóa .0fkhỏi các hằng số và lặp lại lệnh biên dịch. Sau đó, thực hiện một difftrong số mới test.svà trước đó. Hãy nghĩ rằng điều đó sẽ cho thấy nếu có bất kỳ sự khác biệt thực sự nào. Tôi nghĩ rằng quá nhiều người có tầm nhìn về những gì họ nghĩ rằng trình biên dịch làm, nhưng vào cuối ngày, người ta nên biết cách xác minh bất kỳ lý thuyết nào.