Not to beat a dead horse, but to make sure:
extern is thus indeed redundant on function declarations, but not on object declarations. Object declarations, without storage-class specifiers, at file scope (that is, external declarations) have external linkage, but are not assumed to have the storage-class specifier extern.If the declaration of an identifier for a function has no storage-class specifier, its linkage is determined exactly as if it were declared with the storage-class specifier extern. If the declaration of an identifier for an object has file scope and no storage-class specifier, its linkage is external.
Because the first sentence of the quote isn't relevant to the previous discussion I assume you quoted it for completeness, but I wasn't certain; hence this post.