Когда я компилирую следующие исходные коды в VC++ 10, i
со статической связью назначается 42
, но в G++ 4.5.1 i
с внешней связью в source2.cpp назначается 42
.
Любые идеи о том, что должно быть стандартным подтверждающим поведением в соответствии со Стандартом или почему?
// source1.cpp
#include <iostream>
static int i = 0;
int h();
void foo()
{
int i;
{
extern int i;
i = 42;
}
}
int main()
{
foo();
std::cout << i << std::endl;
std::cout << h() << std::endl;
}
// source2.cpp
int i;
int h() { return i; }
#include
в вашем обновлении. - person CB Bailey   schedule 27.11.2011