gpt4 book ai didi

c++ - x64 架构上的 va_start 错误?

转载 作者:行者123 更新时间:2023-11-28 05:59:36 25 4
gpt4 key购买 nike

我很难在 x64 中编译我的程序。虽然我能够修复所有问题并进行编译,但我的程序在日志记录时崩溃了:

void TLog::VLogAddFormat(COLORREF colorText, const char *& AddressOfFmt, ...)
{
m_Sync.Lock();
// ----
PrepareLogBuff();
// ----
//setter(&AddressOfFmt, -32L);
va_start(m_pArguments, AddressOfFmt); // the real address of fmt. m_pArguments = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v)
vsprintf(m_LogTempBuff, AddressOfFmt, m_pArguments);
va_end(m_pArguments); < BREAK HERE !
// ----
LogAddStr(colorText, m_LogTempBuff);
// ----
m_Sync.Unlock();
}

请注意,我添加了“...”,否则它无法编译。中断发生在:“va_end(m_pArguments); < BREAK HERE !”奇怪的问题是,在“m_pArguments”中我得到了非常奇怪的字符......

有人能告诉我应该如何在 x64 中使用 va_start 吗?非常感谢。

最佳答案

您不能将引用参数传递给 va_start。这是未定义的行为。

关于c++ - x64 架构上的 va_start 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com