c - 如果有许多具有相同参数的函数,是否应该使用宏来避免多次输入参数?

标签 c function macros

我有一些旧的 C 程序需要维护。对于某些具有完全相同参数的函数(至少 10 个),程序员使用宏来避免一次又一次键入相同的参数。宏定义如下:

#define FUNC_DECL(foo) int foo(int p1, int p2, ....)

然后,如果我想定义具有相同参数的函数,我只需要输入:

FUNC_DECL(func1) 

除了避免多次输入相同参数的繁琐工作之外,这种实现方式还有其他优点吗?

这种实现让我有点困惑。还有其他缺点吗?

这种实现方式好吗?

最佳答案

正如我在主要问题的评论中指出的,使用宏声明具有相同参数列表的函数的优点是它确保定义do具有相同的参数列表。

主要缺点是它看起来不像普通的 C,因此阅读代码的人必须搜索更多代码才能弄清楚它的含义。

总的来说,我不喜欢那种基于宏的方案,但偶尔有足够好的理由使用它 - 这可能是一个边界示例。

There are at least ten functions with the same parameters. Currently‌​, every function only has 3 parameters.

哦,只有3个参数?那么就没有理由使用宏了——我以为它有 10 个参数。清晰度更重要。我不认为使用宏代码会更清晰。您需要更改 10 个函数以使用 4 个参数(而不是 3 个)的可能性相当有限,而且无论如何您都必须更改代码才能使用额外的参数。打字的保存无关紧要;节省花在思考宏含义上的时间是相关的。第一个必须对代码感到困惑的人会花费比你键入函数声明更长的时间 - 即使你在打字时寻找和啄食。

除掉它——砍掉它的头!删除宏。让您的代码再次变得快乐。

关于c - 如果有许多具有相同参数的函数,是否应该使用宏来避免多次输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966657/

相关文章:

c - 关于 C 中的嵌套函数

Python 函数可选参数 - 可以添加为条件吗?

c++ - Arduino有平台宏吗?

java - openJDK 版本号 - 这些是宏吗? : $MAJOR. $次要.$安全。如何访问这些内容?

c - 如何查看编译语言可执行文件里面的指令?

c - 3d线程索引和并行化2题

将指针转换为 float 或指向带有指针参数的函数

c++ - 如何在C编程中打开没有名称冲突的嵌套结构?

c - C 中的管道标准输出

scala - Scala 中的类型细化但不使用细化