結論
不能。C 語言編譯後變量名消失 (符號表不保留在可執行文件中,除非調試信息),運行時無法通過數組獲取「哪個變量賦值給了數組」。
替代方案
- 結構體/鍵值對:`struct { const char* name; int value; } arr[];` 手動記錄名稱。
- 宏封裝:`#define SET(arr, i, var) do { arr[i].name=#var; arr[i].value=var; } while(0)` 編譯期字符串化變量名。
- 調試信息:讀取 DWARF/PDB 需解析調試段,極其複雜,非通用方案。
參考
百度知道相關討論