Extern keyward on function in C

I saw a header (.h) file with mixture of "regular" function declarations and other extern function declarations. As I was told all function declarations are implicitly external and the extern on functions declarations is superfluous. Here my focus is on function declaration, not variable yet.

int fq_read_length (char *data);
char *fa_count (char *start, int length);
extern int get_parainfo (char *full, Queue *head, char type);
extern char *fastq_relocate (char *data, int offset, int length);
extern char *jump (char *target, char type, float sampling_rate);
extern char *get_right_sp (char *start_point ,char type);
extern char *check_fmt (Queue *info, Queue *tail, char *start_point, char type);
int total_full_check (bloom * bl, char *p, int length, float tole_rate, F_set *File_head);
extern int fastq_read_check (char *begin, int length, char mode, bloom * bl, float tole_rate, F_set *File_head);
extern int fasta_read_check (char *begin, int length, char mode, bloom * bl, float tole_rate, F_set *File_head);
void isodate(char* buf);
int total_subscan (bloom *bl, F_set *File_head, char *begin, char *start_point, int read_length, int true_length, float tole_rate, char mode, char type);

Then why is extern on function declaration still used, and what is the benefit? Thanks!

You can define a function to be static which makes it available only to functions calling that function from the same file in which that static function is defined.

If a function is declared to be external in a header that is included in a file that defines one or more of those functions as static, I think the results are undefined, but I'd have to do some digging through the C Standard to be sure that a diagnostic wouldn't be required in this case.

All functions are implicitly extern, yes, but there's sometimes more to be said.

// To use a C function from C++ you must warn the linker to expect 
// the symbol _functionname, not a C++ hashed overload like @kldsgjlakgjadls
extern "C" int functionname(int);

Also different linking specifications for different kinds of libraries, i.e. so's and dll's vs statically linked things. Sometimes the linker can handle that for you, but it's often more efficient, at least, to warn it in advance that it will be calling external library code.