Tên macro kiểu C có tuân theo cùng các quy tắc đặt tên như số nhận dạng không? Sau khi nâng cấp trình biên dịch, nó hiện đang phát ra cảnh báo này cho một ứng dụng kế thừa:Ký tự hợp lệ cho tên macro là gì?
warning #3649-D: white space is required between the macro name "CHAR_" and its replacement text
#define CHAR_& 38
Dòng mã này xác định hằng số giá trị ASCII cho dấu và.
#define DOL_SN 36
#define PERCENT 37
#define CHAR_& 38
#define RT_SING 39
#define LF_PAR 40
Tôi cho rằng định nghĩa này (không được tham chiếu bởi bất kỳ mã nào, theo như tôi có thể biết) là lỗi và phải được thay đổi thành "CHAR_AMPERSAND"?
ISO/IEC 9899: TC3 6.10/1 chỉ định ngữ pháp của các chỉ thị tiền xử lý, làm rõ rằng tên macro chia sẻ cùng một quy tắc giống như định danh. 6.4.2.1/1 chỉ định quy tắc cho số nhận dạng. – saffsd