用C语言编写多行宏

时间:2018-03-04 05:39:03

标签: c macros

如何用C语言编写多行宏。是否可以将代码(如函数)编写为宏。例如,如果我想编写一个函数来查找数字的所有数字的总和,那么我可以将该函数写为宏。

2 个答案:

答案 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