Should functions be made extern
in header files? Or are they extern
by default?
For example, should I write this:
// birthdays.h
struct person find_birthday(const char* name);
or this:
// birthdays.h
extern struct person find_birthday(const char* name);
From The C Book:
If a declaration contains the extern storage class specifier, or is the declaration of a function with no storage class specifier (or both), then:
- If there is already a visible declaration of that identifier with file scope, the resulting linkage is the same as that of the visible declaration;
- otherwise the result is external linkage.
So if this is the only time it's declared in the translation unit, it will have external linkage.