Bạn không thể viết các chỉ thị tiền xử lý khác bằng bộ xử lý trước. Tuy nhiên, tôi tin rằng bạn có thể xác định chỉ là tên file:
#define MY_MACRO(name) "__FILE__##name_inline.inl"
#include MY_MACRO(name)
The pre-bộ xử lý chạy nhiều lần cho đến khi không có sự thay thế hơn nữa nó có thể làm, vì vậy nó nên mở rộng tên đầu tiên và sau đó #include file tham chiếu .
EDIT: Tôi vừa thử nó và bộ xử lý trước không thể xử lý các dấu ngoặc kép như thế.
#define MY_MACRO(x) <__FILE__##x_inline.inl>
#include MY_MACRO(foo)
hoạt động OK, nhưng <> có thể không phải là thứ bạn muốn.
EDIT2: Như được chỉ ra trong phần nhận xét, __FILE__
không mở rộng chính xác, điều này có thể không phải là điều bạn muốn sau khi tất cả. Lấy làm tiếc.
Không thể thực hiện được. – Philipp