đối với nhiều tác vụ nhanh, trong đó người ta có thể sử dụng một hàm f(x,y)
, trong C đơn giản, các macro được sử dụng. Tôi muốn hỏi cụ thể về các trường hợp này, có thể giải quyết được bằng một lệnh gọi hàm (tức là các macro được sử dụng cho các hàm nội tuyến, không phải để mở rộng mã của mã tùy ý).
Thông thường các hàm C không được nội tuyến vì chúng có thể được liên kết đến từ các tệp C khác. Tuy nhiên, các hàm C tĩnh chỉ hiển thị từ trong tệp C mà chúng được xác định. Do đó, chúng có thể được nội tuyến hóa bởi trình biên dịch. Tôi đã nghe nói rằng rất nhiều macro nên được thay thế bằng cách biến chúng thành các hàm tĩnh, bởi vì điều này tạo ra mã an toàn hơn.
Có những trường hợp đây là một ý tưởng không tốt?
Xin nhắc lại: Không hỏi về các macro Sản xuất mã với các cấu trúc ## giống nhau mà hoàn toàn không thể biểu thị dưới dạng hàm.
inline
hàm ing chỉ đảm bảo nó có thể được xác định nhiều lần trong nhị phân, trình biên dịch có thể quyết định liệu nó có thực sự nội tuyến để có thể tiết kiệm không gian hay không
inline
, đây không phải là về C ++.
inline
C, ít nhất là từ C99. Để biết tổng quan nhanh, xem Wikipedia về các chức năng nội tuyến .