Các macro __FILE__
và __LINE__
được tích hợp vào Bộ xử lý trước C và thường được sử dụng để in đầu ra gỡ lỗi với tên tệp và số dòng. Tôi cần một cái gì đó tương tự, nhưng chỉ với tên của thư mục ở cuối con đường. Ví dụ: nếu mã của tôi là: /home/davidc/some/path/to/some/code/foo/bar Tôi cần macro sẽ chỉ cung cấp cho tôi "thanh", nếu mã nằm trong/home/davidc/một số/con đường/đến/một số/code/foo/ong sau đó tôi cần nó để cho tôi "ong".Làm cách nào để viết macro cpp __DIR__, tương tự như __FILE__
Mọi suy nghĩ? (btw, đây là một ứng dụng C++).
Cập nhật: để rõ ràng, tôi sau một macro sẽ cho tôi một chuỗi có chứa tên thư mục tại thời gian biên dịch, tôi không muốn thực hiện bất kỳ xử lý chuỗi nào khi chạy.
D'oh, bạn đã đánh bại tôi một phút - tôi đã làm khá nhiều điều tương tự. Nó không hoàn toàn hoạt động nếu thư mục cuối cùng có không gian trong đó, nhưng nếu không thì đó là một giải pháp hoàn hảo. Và hãy tin tôi - Tôi đã thấy * xa hơn * những quái dị tồi tệ hơn trong Makefiles trước đây. –
@Adam: Tôi chỉ phải thực hiện một số _fixups_ để nhận được số phiên bản bắt đầu bằng số 0 tối nay. Đi từ 07.64 đến 08.01 đã khiến chúng tôi rất đau buồn. –
Tôi đang sử dụng CMake, vì vậy tôi có thể làm điều này. Cảm ơn! –