Trong C: Tại sao chỉ có các hàm nội tuyến có liên kết nội bộ (tức là khai báo với tĩnh) có thể tham chiếu (tức là sao chép địa chỉ, đọc, ghi hoặc gọi) một biến hoặc hàm tại phạm vi tệp với thời gian lưu trữ tĩnh. có thể không?Chức năng nội tuyến có liên kết nội bộ?
Trả lời
Đây là cách mọi thứ được xác định.
Chức năng nội tuyến sẽ được chèn vào trong mô-đun nơi nó được gọi. Vì vậy, nó không thể truy cập vào các công cụ riêng tư trong mô-đun của nó, nơi nó được xác định.
Nếu hàm được gạch chân là chỉ được sử dụng trong mô-đun đó (liên kết nội bộ). Sau đó, an toàn để cấp cho nó quyền truy cập vào nội dung "riêng tư" của mô-đun đó.
Một đối tượng hoặc chức năng có phạm vi tệp, được khai báo với bộ định danh bộ nhớ "tĩnh" có liên kết nội bộ. Trong khi tuổi thọ của nó là toàn bộ việc thực hiện chương trình, một đối tượng có liên kết nội bộ không được khai báo (có thể nhìn thấy từ) các đơn vị dịch thuật khác.
Đối với một hàm nội tuyến với mối liên hệ bên ngoài, trình biên dịch có thể:
- gọi các dụ trong đơn vị dịch trong đó hàm được khai báo
- thực hiện một thay inline tại thời điểm cuộc gọi
- tạo một ví dụ giống hệt nhau của hàm trong đơn vị dịch thuật gọi điện
Trong hai trường hợp cuối cùng, các đối tượng có liên kết nội bộ sẽ không hiển thị. Do đó, một hàm nội tuyến có liên kết bên ngoài không thể tham chiếu đến số nhận dạng có liên kết nội bộ.
Hơn nữa, nó "không chứa định nghĩa của đối tượng có thể sửa đổi với thời gian lưu trữ tĩnh" vì điều này có thể dẫn đến nhiều trường hợp đối tượng đó có thể không phải là hành vi dự định.
- 1. Chức năng nội tuyến và liên kết bên ngoài
- 2. Chức năng nội tuyến
- 3. Liên kết hàm nội tuyến
- 4. chức năng ảo nội tuyến
- 5. Nội tuyến không thành công: nội dung chức năng có thể được ghi đè vào thời gian liên kết
- 6. lỗi liên kết hàm nội tuyến
- 7. Chức năng nội tuyến trong C++
- 8. C++: Chức năng nội tuyến và tạo mã thời gian liên kết
- 9. Lỗi liên kết cho các hàm nội tuyến
- 10. Lần khi không thể sử dụng chức năng nội tuyến
- 11. Trình liên kết Lỗi khi có chức năng Nội tuyến không được xác định trong tệp tiêu đề?
- 12. Liên kết nội bộ với wkhtmltopdf?
- 13. Bộ chọn khung nội tuyến khung nội tuyến jquery
- 14. C: Con trỏ trỏ tới nội tuyến chức năng
- 15. Vòng lặp dựa trên dải và chức năng nội tuyến
- 16. lực nội tuyến chức năng trong đơn vị dịch khác
- 17. chức năng nội tuyến vẫn hiển thị trong tệp .prof
- 18. nội tuyến một chức năng bên trong một hàm nội dòng khác trong C
- 19. Căn giữa dọc trên thẻ liên kết khối nội tuyến
- 20. Ẩn liên kết giới thiệu trên khung nội tuyến
- 21. Tải liên kết khung nội tuyến vào cửa sổ chính?
- 22. Việc tạo một hàm nội tuyến có ảnh hưởng đến liên kết của nó không?
- 23. chức năng nội tuyến trong không gian tên tạo ra các biểu tượng trùng lặp trong liên kết trên gcc
- 24. Nội bộ V8 - Xử lý các chức năng ẩn danh
- 25. Kiểm tra nội bộ của các chức năng trong Haskell
- 26. Làm thế nào để khai báo một từ điển có chức năng nội tuyến
- 27. Khối nội tuyến (__asm) có thể ngăn chặn tối ưu hóa chức năng không?
- 28. C++ chức năng người bạn nội tuyến có cùng tên với biến thành viên
- 29. Tiêu đề và liên kết nội bộ chú ý
- 30. jQuery - Gọi hàm nội tuyến