Du könntest eine ID , oder gar den ganzen Konstantensatz, ins EEPROM schreiben.
Denn es sind genau solche Zwecke/Ziele/Anforderungen, welche den Hersteller veranlasst haben, dort ein EEPROM einzubauen.
Der Compiler müsste irgendwie erkennen welche Adresse Arduino hat
Wie soll er das tun?
Der Compiler spricht ja NIE mit dem Prozessor.
Ein Rat am Rande:
Ein vermiedenes Define ist ein gutes Define.
Ein vermeidbares Define, ist ein böses Define.
Unsigned Integer (uint16_t) beschert Dir sogar 65535 Adressen, würde mir besser gefallen. Der Wert 0xFFFF deutet auf ein unbeschriebenes EEPROM, weshalb ich ihn als Fehler aussortieren würde.