【问题标题】:Is it okay to shorthand a function call using a macro? C++ [closed]可以使用宏来简写函数调用吗? C++ [关闭]
【发布时间】:2021-08-15 11:47:55
【问题描述】:

我正在使用 C++ 慢慢地为一个游戏男孩编写一个模拟器,我目前正在处理 CPU 方面的工作。我编写了一个通用函数,它接受 CPU 的任意两个寄存器并以 Word 数据类型返回。因为需要访问单个寄存器以及寄存器组合。

const Word get_word(Byte *registerOne, Byte *registerTwo)
{
    return ((*registerOne << 8) | *registerTwo);
};

调用这个函数变得乏味,因为你必须指定每个寄存器

get_word(&amp;this-&gt;registers.h, &amp;this-&gt;registers.l)

我的问题是这样定义宏是否可行

#define get_HL() get_word(&this->registers.h, &this->registers.l)

因为现在我可以使用 get_HL()

之所以要这样做,是因为我不想创建更多只执行函数调用的私有/公共函数。

我尝试过编译,它似乎可以正常工作,因为它只是一个预处理器宏,但我不确定设计含义

编辑:

好吧,我的意思是这有明显的缺陷,你应该只做一个函数,就像做一个函数或编写一个宏一样多的工作。

const Word get_HL() { return this->get_word(&this->h, &this->l); };

这篇文章发给有相同想法的人,希望不要再犯同样的错误

【问题讨论】:

  • I don't want to create more private/public functions that just perform function calls. 为什么不呢?

标签: c++ macros preprocessor


【解决方案1】:

不,我认为这不合适。它隐藏了您传递给函数的参数,并且宏不尊重范围,因此很容易受到名称冲突的影响。这似乎是非静态成员函数的理想用例。

【讨论】:

  • 好的,谢谢,可惜问题已经结束了,我最后做了函数,但重要的是要问什么是好的设计以及如何改进当前的设计
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2023-03-29
  • 2013-01-23
  • 1970-01-01
相关资源
最近更新 更多