Sự khác nhau giữa bốn từ khóa (khóa) này là gì?nội tuyến so với __inline so với __inline__ so với __forceinline?
inline
, __inline
, , __forceinline
.
Sự khác nhau giữa bốn từ khóa (khóa) này là gì?nội tuyến so với __inline so với __inline__ so với __forceinline?
inline
, __inline
, , __forceinline
.
inline
là từ khóa, bằng C++ và C99.
__inline
là từ khóa dành riêng cho nhà cung cấp (ví dụ: MSVC) cho hàm nội tuyến trong C, vì C89 không có.
tương tự như __inline
nhưng là từ một nhóm trình biên dịch khác.
__forceinline
là từ khóa dành riêng cho nhà cung cấp khác (chủ yếu là MSVC), sẽ áp dụng nhiều lực hơn để nội dòng hàm so với gợi ý __inline
(ví dụ: ngay cả khi mã kết quả xấu hơn).
Ngoài ra còn có __attribute__((always_inline))
trong GCC và tiếng kêu.
__forceinline là một gợi ý mạnh mẽ hơn nội tuyến, nhưng vẫn chỉ là một gợi ý (http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.80%29.aspx). –
Có thể xem xét việc thay đổi ngôn ngữ "Microsoft cụ thể" thành "nhà cung cấp cụ thể" hoặc một cái gì đó tương tự. Nhiều bộ công cụ phát triển chéo mà tôi sử dụng cũng hỗ trợ __inline và __forceinline. Thế giới lớn hơn MSOFT ;-) – Dan
Rất tiếc, đã vô tình CW-ed bài đăng. Bất cứ điều gì. – kennytm
__inline
, và __forceinline
là tất cả triển khai cụ thể. Vì dấu gạch dưới kép chúng là tất cả các mã định danh được dành riêng cho việc triển khai nên không nên xung đột với các số nhận dạng được sử dụng trong các ứng dụng.
inline
là từ khóa C++ duy nhất.
Đối với Studio biên dịch trực quan nó có nghĩa là:
inline - gợi ý để trình biên dịch để inline code của bạn
__forceinline - đè tối ưu hóa trình biên dịch được xây dựng trong và tạo ra mã nội tuyến
Để biết thêm thông tin ails xem: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
Bạn cũng nên hỏi cộng đồng những gì đề xuất sử dụng nội tuyến là. –