这个程序怎么理解?
#ifndef MACRO_PARAMS_H#define MACRO_PARAMS_H
#define PARAM_SET(type, name, qualifier, setqualifier)\
qualifier: type m_##name;\
setqualifier: inline void set##name(type name) {m_##name=name;}
#endif
上面的程序,谁给解释一下,实在看不懂;
中间的##是什么鬼?
还有以上是定义,我看在另一个程序中是这样用的:
PARAM_GET(double, xmin, protected, public); 文件名的后缀不是.c吧,这不是c语法,这是不是.h文件 豆嘉木 发表于 2022-8-8 16:55
文件名的后缀不是.c吧,这不是c语法,这是不是.h文件
是h文件 闪亮的马路 发表于 2022-8-8 17:17
是h文件
哈哈,那鱼c估计没人能回答你,因为学这个的人极少,蛮原始的东西 这段代码是一个快速创建 getter/setter 的工具
## 操作符的作用是把其前后(两个操作数)经过参数替换之后得到的结果相连来生成一个新的标识符。按此,解释一下调用的含义(调用使用的是 PARAM_GET ,猜测是用来定义 getter 的,而上面的是 PARAM_SET ,不过二者应该非常相似,这里把它们都当成 PARAM_SET )
// PARAM_SET(double, xmin, protected, public);
//type -> double
//name -> xmin
//qualifier -> protected
//setqualifier -> public
protected: double m_xmin; // 这里把 m_ 和参数传入的 xmin 连接在了一起生成了 m_xmin
public: inline void setxmin(double xmin){ m_xmin = xmin; }// 这里类似
在类或结构体里用 PARAM_SET 或 PARAM_GET 就可以“一键生成” getter/setter 了
页:
[1]