C++ - linkage
От: wander  
Дата: 01.03.14 14:40
Оценка:
Доброго здравия вам

Есть вот такой код (два файла):
a.cpp
#include <iostream>

namespace
{
    int a = 0;
}

int main()
{
    extern int a;

    std::cout << a   << std::endl;
    std::cout << ::a << std::endl;

    return 0;
}

b.cpp
int a = 1;

На GCC 4.7.2 я получаю вывод 1, 0
На VS 2012 получаю 0, 0.

Студия получается изменяет linkage переменной внутри анонимного namespace. Правильно ли это?
Читал стандарт и не нашел явных запретов на это, но и подтверждений такому поведению тоже (может быть что-то упустил).
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.