enum is a type you cannot use the static qualifier, so use this instead:
Code:
enum e {A=0, B, C};
static e my_val = B;
Also I think you want to change the extern bit to:
Code:
extern "C"
{
struct s {int i;};
};
I would have to check this one though, don't have any references to hand ... basically I think you only want C language linkage.
You have not created an actual value or function so you can't give it extern linkage that your syntax tries to, but I may stand corrected.
HTH