Tôi đang viết một loạt các macro tiền xử lý có liên quan, một trong số đó tạo ra các nhãn mà macro kia sẽ chuyển đến. Tôi sử dụng chúng trong thời trang này:Làm cách nào để tạo các giá trị duy nhất trong bộ tiền xử lý C?
MAKE_FUNNY_JUMPING_LOOP(
MAKE_LABEL();
MAKE_LABEL();
)
Tôi cần một số cách để tạo ra nhãn duy nhất, một cho mỗi MAKE_LABEL
cuộc gọi nội, với tiền xử lý. Tôi đã thử sử dụng __LINE__
, nhưng vì tôi gọi MAKE_LABEL
bên trong một macro khác, tất cả đều có cùng một dòng và các nhãn va chạm.
Những gì tôi muốn này để mở rộng đến là một cái gì đó như:
MAKE_FUNNY_JUMPING_LOOP(
my_cool_label_1: // from first inner macro
...
my_cool_label_2: // from second inner macro
...
)
Có cách nào để tạo ra băm hoặc số nguyên auto-incrementing với tiền xử lý?
trình biên dịch gì bạn đang sử dụng? –
Tôi đang sử dụng ICC (nguyên mẫu STM 3.0; dựa trên v11, tôi nghĩ). –
Đối với C++: http://stackoverflow.com/questions/9949532/generate-unique-numbers-at-compile-time?lq=1 –