欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

什么是 C 语言中的非参数宏定义?

最编程 2024-06-03 14:40:30
...

一、问题

        宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序⾃动完成的。在 C 语⾔中,宏定义分为⽆参和有参两种。那么,什么是⽆参宏定义呢?

二、解答

        宏定义就是⽤⼀个指定的标识符来代表⼀个字符串,⽆参宏定义就是不带参数的宏定义,它的⼀般形式可以表示如下。

#define 标识符 字符串

        其中,“#”表⽰⼀条预处理命令,凡是以“#”开头的均为预处理命令;“define”为宏定义命令;“标识符〞为所定义的宏名;“字符串”是需要替换的代码,可以是常数、表达式、格式串等。

        例如,宏定义⼀个表达式和⼀个格式串,然后在主函数中代换,进⾏运算,输出结果。 相应代码如下。

#include <stdio.h>
#define A x *x + 2 / y
#define P printf("%f\n", z)
int main()
{
    int x = 2, y = 4;
    double z = A + 3;
    P;
}

        程序的运⾏结果如下所示。 

7.000000

        上例中,⾸先进⾏宏定义,定义 A 表达式和 P 输出格式,然后在主函数中做了宏调⽤。 在预处理时,经宏展开后的语句变为 z=x*x+2/y+3,然后将主函数中定义的变量代⼊表达式,得到运算结果,最后宏调⽤ P,输出结果。

注意:

        在宏定义时,语句结束不要加分号,因为分号在宏定义中并不表⽰宏定义的结束,⽽是会被当做字符替换掉。

 三、总结

        ⽆参宏定义是⽤宏名来表示⼀个字符串,在宏展开时⼜以该字符串取代宏名,只是⼀个简单的代换,在字符串中可以包含任意字符,在预处理过程对它不做任何错误检查,只 有在编译已经被宏展开后的源程序中才会发现错误。

推荐阅读