I haven't seen this before - I accidentally bumped into this recently. Here's one example of inconsistencies in the io.h header files.
For the ATmega164, ATmega164A, and ATmega164P (all of which include iomxx4.h), the defines for DDRA are as follows:
#define DDRA _SFR_IO8(0X01) #define DDA7 7 #define DDA6 6 . . . #define DDA0 0
However, for the ATmega164PA, the defines for DDRA are as follows:
#define DDRA _SFR_IO8(0x01) #define DDRA7 7 #define DDRA6 6 . . . #define DDRA0 0
Why is this? These ATmega164PA defines don't agree with the Atmel documentation (doc8272.pdf) for the ATmega164A/PA/324A/PA/644A/PA/1284/P.
BTW: I'm using:
Atmel Studio 6 (Version: 6.0.1996 - Service Pack 2)Installed Packages: AVRGCC - 3.4.1.95
AVR Toolchain 8 Bit
Version: 3.4.1.830 - GCC 4.6.2