#define语句后面加括号VS不加括号 |
您所在的位置:网站首页 › if语句加括号和不加括号的区别在哪里 › #define语句后面加括号VS不加括号 |
当定义“常数宏”的时候区别不大,如 #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 |