You cannot declare a variable of type void because variables must have object type or be references, extern void f; doesn’t declare a reference, and void is not an object type:
Section 3 [basic] says that
A variable is introduced by the declaration of a reference other than a non-static data member or of an object.
Section 3.9 [basic.types] says that
An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not a
voidtype.