2015-08-04 14 views
5

Có thể viết macro gcc để hủy bỏ một đối số theo chuỗi không? Tôi biết điều ngược lại là có thể với #. Nó có thể được đảo ngược?Tiêu hủy trong bộ tiền xử lý gcc

Ví dụ: __func__ đánh giá tên của hàm hiện tại dưới dạng chuỗi ký tự. Tôi có thể loại bỏ các dấu ngoặc kép xung quanh nó không?

+3

['__func__' không phải là macro] (http://stackoverflow.com/questions/15305310/predefined-macros-for-function-name-func) – Banex

+0

Tôi không nghĩ rằng điều đó là có thể và bạn có thể ' t dự phòng xác định macro để giữ tên hàm. –

Trả lời

6

Không, không thể chuyển đổi "foo" thành foo bằng bộ tiền xử lý C/C++ chuẩn. Nếu bạn hoàn toàn cần điều này, bạn sẽ cần phải tạo một chương trình tiền xử lý bên ngoài, tương tự như những gì Qt thực hiện với công cụ moc của nó.

Không hoàn toàn đúng chủ đề, nhưng ngôn ngữ D có chức năng chính xác này - được gọi là mixins. Bạn có thể thực thi mã xử lý chuỗi tùy ý tại thời gian biên dịch và "dán" kết quả vào tệp nguồn của bạn với từ khóa mixin.

+0

Cảm ơn. Câu trả lời chính xác! – PSkocik

Các vấn đề liên quan