Originally Posted by
Elysia
Yes and no. Functions are already visible in all compilation units, so no extern is required at all.
For variables, you do indeed need to add a declaration with extern before it.
No. All variables and functions have external linkage by default. That means you can access them from other compilation units by default. You can override this by adding "static" before them. In that case, you can't use the functions/variables in other compilation units.
I'm only 90% sure about the functions side of the argument, but the variables should be right.