Я вижу это предупреждение при компиляции (gcc 4.6.3, ubuntu):
struct {
} a;
int main()
{
}
warning: anonymous type with no linkage used to declare variable ‘<anonymous struct> a’ with linkage [enabled by default].
GCC не дает этого предупреждения. Только g++ делает.
Добавление static устраняет предупреждение:
static struct {
} a;
Я не мог понять, что это значит, особенно почему type
связан с linkage
. Я думал, что связь зависит от того, где и как объявляется переменная, но не от типа самой переменной.