如何在 clang 中使用 __FUNCTION__ 附加静态字符串

问题描述 投票:0回答:1

以下 C++ 代码可以使用 MSVC 正常编译,但不能使用 CLang 编译。

void Test()
{
    auto str = __FUNCTION__ "." "Description";
}

为什么这仅适用于 MSVC?我怎样才能让这个对 clang 有用? (

.
Description
可以在两个编译器中附加而不会出现任何问题)

clang error: expected ';' at end of declaration

请注意,

"Test . Description"
不是一个解决方案,我想在宏中使用它并根据宏所使用的函数来创建静态字符串。

c++ string clang
1个回答
0
投票

如果 clang 与

-E
一起运行,可以看出
__FUNCTION__
不是宏。在带有链接的answer的评论中也注意到了这一点。

# 1 "/app/example.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 468 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "/app/example.cpp" 2

void Test()
{
    auto str = __FUNCTION__ ".Description";
}

你可以做这样的

#include <string>
using namespace std::string_literals;

void Test() {
  const auto str = __FUNCTION__ + ".Description"s;
}
© www.soinside.com 2019 - 2024. All rights reserved.