Bài viết phổ biến của tác giả
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我在工作中得到了一些全新的代码,我对这些代码的运行方式感到困惑。翻找了一番,查不到什么资料,特来求助。
Mã như sau:
#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; \
}
这是什么意思?
1 Câu trả lời
hiện hữu #define
之后,只要 DCL_PROP(
prop)
出现在类中,宏中列出的测试就会被注入(inject)到C++ 代码,使用公共(public) set_
prop 和 get_
prop 函数添加名为“prop”的私有(private)数据成员。例如:
class X
{
DCL_PROP(name);
};
会生成这样的代码:
class X
{
riêng tư:
std::string prop;
công cộng:
User& set_name(const std::string& prop)
{
this->prop = prop;
return *this;
}
const std::string& get_name()
{
return prop;
}
};
...除了它在生成的代码中都在一行上,这与功能无关。
您通常可以使用编译开关观察这些类型的替换,例如:g++ -E somefile.cc
hoặc cl.exe/E somefile.cpp
.
关于c++ - #define DCL_PROP(prop) 这样的宏是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272541/
最近,我在工作中得到了一些全新的代码,我对这些代码的运行方式感到困惑。翻找了一番,查不到什么资料,特来求助。 代码如下: #define DCL_PROP(prop) \ private: \
Tôi là một lập trình viên xuất sắc, rất giỏi!