gpt4 book ai didi

c++ - 追加 __FUNCTION__ 宏提供的字符串

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

我定义了一个宏如下:

#define ADD_TIME_ENTRY(_name_)   m_pTimeMeasurement->addTimeEntry(_name_);

现在,我想通过 ADD_TIME_ENTRY() 传递函数名称,无论我将 ADD_TIME_ENTRY()

放在哪个函数中

ADD_TIME_ENTRY(__FUNCTION__) 对我来说工作正常,但现在,我想在函数名称的末尾添加“_start”或“_stop”。我的意思是,我需要像 "imageFunction()_start" 这样的东西,但我做不到。

我想在一行中完成,即

imageFunction()
{
ADD_TIME_ENTRY(__FUNCTION__ ....something here...);
}

最佳答案

您可以添加一个额外的宏 #define STRINGIZE(str) #str 并像这样使用它:ADD_TIME_ENTRY(__FUNCTION__ STRINGIZE(start))


似乎 __FUNCTION__ 可能不是一个宏,所以在这种情况下将它与任何东西结合起来并不是特别容易。在 MSVC2013 中,它是一个宏,因此很容易组合。对于其他编译器,我会尝试以下操作:

#define GIVE_ME_NAME(tag) std::string(__FUNCTION__) + STRINGIZE(tag)

不是特别有效,但工作方式。

例子:

#include <iostream>
#include <string>
using namespace std;

#define STRINGIZE(str) #str
#define GIVE_ME_NAME(tag) std::string(__FUNCTION__) + STRINGIZE(tag)

int main()
{
std::cout << GIVE_ME_NAME(start);
};

关于c++ - 追加 __FUNCTION__ 宏提供的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865796/

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