:静的ストレージとios_base::Init
のインスタンスを定義<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仕様を無視することを決めたとは思わないし、<iostream>
をA.cppに含めた。仕様書によるとそれで十分です。
厳密には正確なコードを入力してください。 – bmargulies
完了(15文字) – marmistrz
これはコンパイルされません。 –