【发布时间】:2011-02-06 20:20:07
【问题描述】:
我见过简单的宏示例,但想知道更复杂的东西,比如 if 语句和重新分配给定变量。像这样更复杂的表达式可以在宏中完成吗?我有一个可以运行数十亿次的函数,所以最好让预处理器把代码扔进去,而不是来回传递变量。
假设我有以下功能:
int foo(int a, int b, int c){
if (a > 2)
c = a;
if (b > 3)
c = b;
return a + b + c;
}
我怎样才能把它变成一个宏?
【问题讨论】:
-
嗯。你到底想做什么?为什么将其设为宏会改变任何事情。
-
现在没有理由为此使用宏 - 如果调用开销很大,则使用内联函数,但自 C89 以来就不再需要宏,并且存在许多缺点和陷阱。
-
@Paul:宏是在 C 中进行泛型编程的唯一方法。如果 OP 想要一个像
int、long和double参数(在任何组合)? -
@R..:那么 OP 应该在问题中提到这一点;-p 据我所知,“for this”中的“this”不是“通用编程”。跨度>
-
我同意宏在这里没用。我想我错过了保罗评论中的“为此”。