Pointer addition only seems to work for inbuilt data types, not for structures.
I've made a minimal test case to reproduce this, below.
I guess I could get around it by casting to a char* and adding on sizeof(s), then casting back... but that's kind of annoying!
The fact that "s++" works but "s+=1" doesn't definately looks like a bug!
#include <system.h>
struct ST
{
unsigned char x;
};
void main(void)
{
struct ST *s; // Pointer to structure
unsigned char *c; // Pointer to character
c++; // OK
s++; // OK
c += 1; // OK
s += 1; // error: illegal operation for operands 'unsigned