gpt4 book ai didi

c++ - 尝试传递字符串变量时出现 TRACE 宏错误

转载 作者:行者123 更新时间:2023-11-28 08:20:17 33 4
gpt4 key购买 nike

当我尝试将字符串传递给它时,我对 TRACE 宏的调用导致错误:

TRACE(_T("PrintAppMsgTrace: %s"), _T(GetCmdIdStr( pMsg[APP_MSG_CODE_OFFSET] )));

这是我在控制台窗口输出中得到的错误:

_CrtDbgReport: String too long or IO Error

这是 GetCmdIdStr 的原型(prototype):

char * GetCmdIdStr( BYTE id );

GetCmdIdStr 返回一个指向内存的指针,其中包含类似“APP_ZDO_NLME_LEAVE_REQ”的内容。它基本上是这样工作的:

char * GetCmdIdStr( BYTE id )
{
return "APP_ZDO_NLME_LEAVE_REQ";
}

为什么会出现此错误?任何想法将不胜感激。谢谢。

最佳答案

_T() 宏用于字符串文字。如果您正在编译 ANSI,它会扩展为原始字符串文字;如果您正在编译 UNICODE,它会扩展为带有 L 前缀的字符串文字。您不能将它应用于函数的返回值。

如果可能,最简单的做法是更改 GetCmdIdStr 函数以返回 TCHAR 而不是 char:

TCHAR * GetCmdIdStr( BYTE id )
{
return _T("APP_ZDO_NLME_LEAVE_REQ");
}

关于c++ - 尝试传递字符串变量时出现 TRACE 宏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049198/

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