Understanding arguments in avr/eeprom.h functions

The argument is a pointer because the functions are meant to be used with EEMEM...

unsigned long RandomSeed EEMEM = 13;

void setup( void )
{
  randomSeed( eeprom_read_dword( &RandomSeed ) );
  RandomSeed += 101;
  eeprom_write_dword( &RandomSeed, RandomSeed );
}

There are two advantages...

  1. The toolset organizes the EEPROM memory layout. You, the developer, don't need to track what is stored where.

  2. The toolset generates an upload image with the initial values (the "13" in my example).