gpt4 book ai didi

c++ - #define DCL_PROP(prop) 这样的宏是如何工作的?

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

最近,我在工作中得到了一些全新的代码,我对这些代码的运行方式感到困惑。翻找了一番,查不到什么资料,特来求助。

代码如下:

#define DCL_PROP(prop) \  
private: \
std::string prop; \
public: \
User& set_##prop(const std::string& prop) \
{ \
this->prop = prop; \
return *this; \
} \
const std::string& get_##prop() \
{ \
return prop; \
}

这是什么意思?

最佳答案

#define 之后,只要 DCL_PROP(prop) 出现在类中,宏中列出的测试就会被注入(inject)到C++ 代码,使用公共(public) set_prop 和 get_prop 函数添加名为“prop”的私有(private)数据成员。例如:

class X
{
DCL_PROP(name);
};

会生成这样的代码:

class X
{
private:
std::string prop;
public:
User& set_name(const std::string& prop)
{
this->prop = prop;
return *this;
}
const std::string& get_name()
{
return prop;
}
};

...除了它在生成的代码中都在一行上,这与功能无关。

您通常可以使用编译开关观察这些类型的替换,例如:g++ -E somefile.cccl.exe/E somefile.cpp

关于c++ - #define DCL_PROP(prop) 这样的宏是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272541/

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