정적 스토리지 ios_base::Init
의 인스턴스를 정의 <iostream>
것처럼한다 번역 유닛 <iostream>
를 포함정적 순서 초기화 실패, iostream 및 C++ 11
결과 지속. 마찬가지로, 전체 프로그램은 정적 저장 기간이
ios_base::Init
적어도 하나 개의 인스턴스가있는 것처럼 행동해야이 의미
이 내 코드처럼 보이는 경우 :
// A.cpp
#include <iostream>
using namespace std;
unsigned long foo() {
cerr << "bar";
return 42;
}
및
// B.cpp
using namespace std;
extern unsigned long foo();
namespace {
unsigned long test() {
int id = foo();
return id;
}
unsigned long id = test();
}
int main() {
return 0;
}
정적 초기화 실패의 위험이없는 안전한 전화 cerr
이어야합니다.
불행히도, 그 코드 segfaults ... 왜? gcc 6.2.1이 C++ 11 사양을 무시한다고 생각하지 않으며 A.cpp에 <iostream>
을 포함 시켰습니다. 사양에 따르면 충분합니다.
정확한 코드를 정확하게 입력하십시오. – bmargulies
완료 (15 문자) – marmistrz
이것은 컴파일되지 않습니다. –