如何用C语言编写多行宏。是否可以将代码(如函数)编写为宏。例如,如果我想编写一个函数来查找数字的所有数字的总和,那么我可以将该函数写为宏。
答案 0 :(得分:2)
一切都有 - 不使用宏。一个更好的替代inline
功能 - 它将达到您期望的相同效率。但为了好玩,我使用了gcc statement expressions
,这意味着一个非便携式gcc中心解决方案。
#include <stdio.h>
#define SUM(X) \
({ long s = 0; \
long x = (X) > 0 ? (X) : (-(X)); \
while(x) { \
s += x % 10; \
x /= 10; \
} \
s; \
})
int main(void) {
printf("%ld\n",SUM(13423) );
return 0;
}
这个解决方案需要一个功能。使用语句表达式在宏内部具有return
某些功能。好吧,我说,去内联功能。这样可以更清洁地实现目的。
答案 1 :(得分:-2)
使用宏有时会变得愚蠢: https://gcc.gnu.org/onlinedocs/cpp/Macro-Pitfalls.html#Macro-Pitfalls 你可以在这里阅读使用它的危险..
但是,对于你的问题:
#include <stdio.h>
#define SUM(X, Y) (X + Y)
void main() {
printf("the sum of 3,4 is : %d\n", SUM(3,4));
}
将输出:
the sum of 3,4 is : 7