Do all variables declared in a block have \'no linkage\'?
For example:
If I declare a static variable:
void foo()
{
static int i;
"Would it have internal linkage or no linkage? if no linkage then why make it static?" -- it would have no linkage. static
specifies the static storage duration.
"What happens if i use extern?" It will be a declaration of a name with external linkage, and since there is none in global scope, the program will report linkage errors. Edit: Since there is a previous static
declaration visible in the scope, the standard says the name "receives the linkage of the previous declaration" 3.5/6, so the i
inside foo()
will have internal linkage.