Tôi có mã có rất nhiều mã lỗi #define phức tạp không dễ giải mã vì chúng được lồng trong nhiều cấp độ.Làm cách nào để tạo danh sách # giá trị xác định từ mã C?
Có cách nào tao nhã để tôi có thể nhận danh sách #defines với giá trị số cuối cùng của chúng (hoặc bất kỳ giá trị nào khác có thể) không?
Như một ví dụ:
<header1.h>
#define CREATE_ERROR_CODE(class, sc, code) ((class << 16) & (sc << 8) & code)
#define EMI_MAX 16
<header2.h>
#define MI_1 EMI_MAX
<header3.h>
#define MODULE_ERROR_CLASS MI_1
#define MODULE_ERROR_SUBCLASS 1
#define ERROR_FOO CREATE_ERROR_CODE(MODULE_ERROR_CLASS, MODULE_ERROR_SUBCLASS, 1)
tôi sẽ có một số lượng lớn cáC# định nghĩa tương tự phù hợp với ERROR _ [\ w _] + mà tôi muốn liệt kê vì vậy mà tôi luôn luôn có một danh sách hiện tại của mã lỗi chương trình có thể xuất ra. Tôi cần giá trị bằng số vì đó là tất cả các chương trình sẽ in ra (và không, nó không phải là một tùy chọn để in ra một chuỗi thay vì).
Gợi ý cho gcc hoặc bất kỳ trình biên dịch nào khác sẽ hữu ích.
Bạn đã xem xét ** sử dụng hằng số thực ** thay vì #defines chưa? –
Việc thay đổi mã thành các const sẽ không thực tế vì nó được kế thừa từ một nguồn ngược dòng. – djs