I don't understand the point of setting a variable to its own value.   Either just export the variable (with whatever value it happens to have) or give it some value not derived from itself.  <code> extern int i = i; </code> is uninitialized ...