0
在此代碼中,我有兩個前向聲明,一個bool
陣列和一個QString
數組,名稱爲NLog
。QStrings陣列的前向聲明導致分段錯誤
bool
的作品。 QString
產生分段錯誤。
部首:
class Log : public QObject
{
explicit Log();
public:
enum Facility
{
third_party_fac,
test_fac,
__facility_last_element
};
enum Severity
{
debug_sev,
warning_sev,
critical_sev,
fatal_sev,
__severity_last_element
};
};
namespace NLog
{
extern bool logging_enabled[Log::__facility_last_element][Log::__severity_last_element];
extern QString severity_name[Log::__severity_last_element];
};
class LogStaticInitiallizer
{
public:
LogStaticInitiallizer();
};
static LogStaticInitiallizer initiallizer=LogStaticInitiallizer();
來源:
QString NLog::severity_name[Log::__severity_last_element];
bool NLog::logging_enabled[Log::__facility_last_element][Log::__severity_last_element];
using NLog::logging_enabled;
using NLog::severity_name;
LogStaticInitiallizer::LogStaticInitiallizer()
{
qDebug()<<"0";
qDebug()<<logging_enabled[0][0];
qDebug()<<severity_name[0];
qDebug()<<"1";
}
它產生
假
並在QString跟蹤處崩潰
'__facility_last_element'和其他以'__'開始的是保留標識符 –
這可能是靜態初始化順序Fiasco *? –
你在哪裏初始化你的數組? – vahancho