当前位置:  开发笔记 > 编程语言 > 正文

C#define宏

如何解决《C#define宏》经验,为你挑选了2个好方法。

这就是我所拥有的,我想知道它是如何工作的以及它实际上做了什么.

#define NUM 5
#define FTIMES(x)(x*5)

int main(void) {
    int j = 1;
    printf("%d %d\n", FTIMES(j+5), FTIMES((j+5)));
}

它产生两个整数:26和30.

它是如何做到的?



1> Cody Brociou..:

发生这种情况的原因是因为您的宏将打印扩展为:

printf("%d %d\n", j+5*5, (j+5)*5);

含义:

1+5*5 and (1+5)*5



2> Greg Hewgill..:

由于尚未提及,解决此问题的方法是执行以下操作:

#define FTIMES(x) ((x)*5)

x宏扩展中的括号可以防止操作员关联性问题.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有