gpt4 book ai didi

c++ - 为什么 __FUNCTION__ 是未定义的?

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:02 31 4
gpt4 key购买 nike

我有一个 C++ 库,它通过 crtdefs.h 使用预定义的宏 __FUNCTION__。宏已记录 here .这是我的用法:

我的.cpp

#include <crtdefs.h>
...
void f()
{
L(__FUNCTIONW__ L" : A diagnostic message");
}

static void L(const wchar_t* format, ...)
{
const size_t BUFFERLENGTH = 1024;
wchar_t buf[BUFFERLENGTH] = { 0 };
va_list args;
va_start(args, format);
int count = _vsnwprintf_s(buf, BUFFERLENGTH, _TRUNCATE, format, args);
va_end(args);
if (count != 0)
{
OutputDebugString(buf);
}
}

crtdefs.h

#define __FUNCTIONW__ _STR2WSTR(__FUNCTION__) 

该库(编译为静态库,如果重要的话)由同一解决方案中的另一个项目使用,该项目是用 C# 编写的 WPF 应用程序。

当我编译库时,我得到这个错误:

identifier "L__FUNCTION__" is undefined.

根据文档,如果将/P 或/EP 传递给编译器,宏不会展开。我已经证实他们不是。是否存在此宏不可用的其他情况?

最佳答案

您将错误列为:

identifier "L__FUNCTION__" is undefined.

请注意,它说的是“L__FUNCTION__”未定义,而不是“__FUNCTION__”。

不要在代码中使用 __FUNCTIONW__。 MS 没有在您链接的页面中记录,他们记录了 __FUNCTION__。而且您不需要加宽 __FUNCTION__

ETA:我还注意到您没有将该字符串分配给任何东西,也没有在 f() 中以任何方式打印它。

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

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