闪亮的马路 发表于 2022-8-8 15:41:51

这个程序怎么理解?

#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);

豆嘉木 发表于 2022-8-8 16:55:14

文件名的后缀不是.c吧,这不是c语法,这是不是.h文件

闪亮的马路 发表于 2022-8-8 17:17:44

豆嘉木 发表于 2022-8-8 16:55
文件名的后缀不是.c吧,这不是c语法,这是不是.h文件

是h文件

豆嘉木 发表于 2022-8-8 17:34:51

闪亮的马路 发表于 2022-8-8 17:17
是h文件

哈哈,那鱼c估计没人能回答你,因为学这个的人极少,蛮原始的东西

dolly_yos2 发表于 2022-8-8 18:34:35

这段代码是一个快速创建 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]
查看完整版本: 这个程序怎么理解?