> No, the compiler is simply applying scope rules. Without that inner > declaration explicitly overriding the outer declaration--whether > static or extern is used-- it will not compile (eg, if you put "static > void fn(Outer*);" or "extern void fn(Outer*);" and remove static from > fn in the file scope).
since nested functions are not allowed, applying nested scope seems a bit odd. anyway, ... if the declaration were in the same place but the referenced function were in another file, the -T would have prevented the link. my question is, why doesn't the c compiler internally apply the same rule? - erik