編譯器報錯:expected identifier before numeric constant,通常出現在枚舉類型定義處。
枚舉常量名與宏定義(#define)產生衝突。預處理階段將宏展開,導致枚舉定義變成非法語法。
#define STATUS_OK 0 enum Status { STATUS_OK, // 預處理後變成 "0," —— 非法標識符 STATUS_ERROR };
ENUM_STATUS_OK。MACRO_STATUS_OK。#undef 取消宏:在枚舉定義前加 #undef STATUS_OK。#define 定義過。同理,const 變量、普通變量、函數名若與宏名衝突也會引發類似詭異錯誤。良好的命名規範(宏全大寫、枚舉/變量駝峰或下劃線)能有效預防此類問題。