Я изучал концепцию объявления и определения (связь, область действия, продолжительность).
Но я обнаружил одну необъяснимую ошибку:
Следующий код подходит как для gcc, так и для Visual Studio2010
#include <stdio.h>
extern int a = 7;
extern int a;
int main()
{
printf("%d\n", a);
}
Но следующий код генерирует ошибку в visual studio, но в gcc это нормально:
#include <stdio.h>
static int a = 7;
static int a;
int main()
{
printf("%d\n", a);
}
error C2370: 'a' : redefinition; different storage class
Это просто ошибка в компиляторе Visual Studio?
РЕДАКТИРОВАТЬ: этот вопрос оказался дубликатом это .