gpt4 book ai didi

c++ - WinRT __FUNCTION__ 未定义

转载 作者:行者123 更新时间:2023-11-27 23:05:17 25 4
gpt4 key购买 nike

我有一个带有 Windows 运行时组件项目的 Windows Phone 8 解决方案。在 WinRT 代码中,我想使用 __FUNCTION__ 从 C++ 类进行日志记录。但是,__FUNCTION__ 未定义,而 __LINE__ 是。

Intellisense 只建议使用 __FUNCTIONW__。但是当我跳转到 crtdefs.h__FUNCTIONW__ 的定义时,我可以看到 __FUNCTION__ 也没有在那里定义:

definition of __FUNCTIONW__ in crtdefs.h

我已阅读 Why would __FUNCTION__ be undefined?但这对我没有帮助(或者我没有正确理解那里描述的问题)

__FUNCTION__ 怎么可能没有被定义?我认为它内置于编译器中...


更新:

好的,我了解到 __FUNCTION__ 实际上从来没有着色。但是当我输入时出现错误:

TCHAR* f = _T(__FUNCTION__);

它说:

Error: Identifier "L__FUNCTION__" is undefined

也许我的 UNICODE 设置有问题?我需要包含一个特殊的 header 吗?

最佳答案

当我在 C++ Phone 8 应用程序中尝试时,它工作正常。请注意,您可能会对未出现在 IntelliSense 自动完成列表中的 __FUNCTION__ 感到困惑。您只能看到 __FUNCTIONW__。这是一个缺陷,宏是predefined in the compiler但 IS 解析器忽略了这一点。由于宏的定义没有出现在包含的 header 中的任何地方,解析器将永远看不到它的定义(就像它对 __FUNCTIONW__ 所做的那样)并且你会看到它从列表。

我无法确认这是否是一个已知错误,connect.microsoft.com 上的搜索功能不够好,无法过滤与“功能”匹配的 6600 个匹配项。如果您愿意,可以提交错误。


编辑后更新:您在代码中使用了古老的 TCHAR 宏。有一个获取正确宏的技巧,但我不打算记录它。 10 多年前,当每个人都停止创建仍可在旧版 Windows 9x 版本之一上运行的程序时,这一切就不再相关了。在手机上当然毫无意义。

您实际上想要使用__FUNCTIONW__(没有_T),它会为函数名称生成Unicode 字符串。它是一个 const wchar_t*。

关于c++ - WinRT __FUNCTION__ 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24041868/

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