#define语句后面加括号VS不加括号

您所在的位置:网站首页 if语句加括号和不加括号的区别在哪里 #define语句后面加括号VS不加括号

#define语句后面加括号VS不加括号

2023-08-15 14:56| 来源: 网络整理| 查看: 265

当定义“常数宏”的时候区别不大,如

#define MAX_NUM x         //x为参数 #define MAX_NUM ( x )    //宏的参数可以用圆括号括起来,此时带参数的宏外形与函数非常相似

但当定义是“类函数宏”时,如

#define  A(x)   x+x #define  B(x)  (x+x)

printf("%d\n",A(x)*A(x) );    //35 printf("%d\n",B(x)*B(x) );    //100

就必须加括号

 

(1)加括号的情况

在编写一个简单的MAX宏时,我们需要加上足够括号才能保证结果尽可能的正确。 #define MIN(X,Y) ((X)>(Y)?(X):(Y)) 在宏定义中最好全部使用大写字母,以区别正规的代码。

 

(2)不加括号的情况

用预处理指令#define声明一个常数,用以表明1年中有多少秒。 #define SECONDS_PER_YEAR (60*60*24*365)UL 单纯这一条宏定义是没有什么错误的,但如果替换到源代码中就会出现语法错误(不应该加括号)。 在整数值后面添加L或者l(小写的L,为了避免视觉错误最好使用L),表示此整数为long整型。 在整数值后面添加U或者u,表示此整数为unsigned整型。 如果各添加一个,也就是都在整数值直接加上后面加上U和L,那就表示unsigned long int型。 数值后面直接加U或者L才行,前边加上括号就不行了。 正确的写法应该是: #define SECONDS_PER_YEAR 60*60*24*365UL 或者 #define SECONDS_PER_YEAR 60*60*24*365LU L和U不分前后,但从可读性的角度来讲在数值后面加UL更符合我们的阅读习惯。

部分原文:https://blog.csdn.net/niu91/article/details/17894379 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3