【发布时间】:2020-11-10 10:12:20
【问题描述】:
我对 C++ 比较陌生,我目前正在根据给定的 C 代码创建一个类。 在这段代码中,有一些宏定义了 for 循环。我听说最好避免使用宏,所以我正在尝试(但失败)以不同的方式编写它们。
我查看了this question,它建议使用模板和仿函数,即使我没有达到我想要的效果。
我将举一个简单的例子。假设宏定义为
#define for_loop (g,u,v) \
for (u = g.attribute, v = g.otherAttribute ; u <= 20 ; u = g.updateAttribute, v = g.updateOtherAttribute)
并且它在代码的几个部分中用于不同的目的。
如果不使用 C++ 中的宏,您将如何实现它?
【问题讨论】:
-
宏只是文本替换。如果没有更多上下文,您给出的示例很难推理。你可以做的就是不使用宏,只写出for循环。您并没有节省多少,而且您想要做的事情更加清晰。
-
避免使用宏的最佳方法是不使用宏,而是编写 C++ 代码。你为什么不能在这里做?如果这需要是通用代码,请考虑使用template function。当与lambda expressions 之类的东西结合使用时,您可以做很多事情,而无需考虑宏。
-
显示典型
g的类型定义(你有很多不同的类型具有这些属性吗?)以及该循环体的示例。
标签: c++