当我在 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; }