网站建设资讯

NEWS

网站建设资讯

c语言宏定义作为函数参数 c中如何宏定义函数名

C语言 有参数宏定义

宏属于预编译,在编译的时候就将你的

创新互联建站是一家专注于做网站、网站建设与策划设计,密山网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:密山等地区。密山做网站价格咨询:13518219792

SSSV(sa,sb,sc,vv);

替换成

sa=l*w;sb=l*h;sc=w*h;vv=w*l*h;

这些编译器已经给你处理了,宏这个就是直接替换

宏有编写规范的,你这里写的宏并不规范,建议上网查一下宏书写的规范

C语言问题,宏定义中的参数为什么要定义,不是主函数中的参数直接替换吗?

首先你要理解什么是预处理命令#define。它的作用是:在编译之前,对#define的参数在作用范围内进行替换操作。如:

#define A 2

int b = A; // 在编译之前,这行代码会被替换成: int b = 2;

所以#define只是替换,可没有定义相关的参数。用这道题来举个例子:

#define JH(a, b, t) t=a; a=b; b=t;

int t, a=1, b=2;

JH(a, b, t); // 在编译之前,这行代码会被替换成: t=a; a=b; b=t;

所以如果没有定义t,那么t=a; b=t; 就会报错。而且如果你没定义t,你又是如何使用

JH(a, b, t)呢?因为你必须写出第三个参数。还有就是要注意在最后它少加了一个分号:

#define JH(a, b, t) t=a; a=b; b=t // 题目中t后面没有分号

这是为了以函数的形式使用宏定义,同时也表明#define只是简单的替换,并不是执行代码。这样的用法是十分常见的。

c语言宏定义里带参数是什么意思?

C的宏可以用来替换常数,替换表达式,仔细把这个程序看完你就明白了,

#includestdio.h

#define SQ(x) ((x)*(x))

#define READ(x) scanf("%d",x)

#define WRITELN(x) printf("%d\n",x)

int main()

{

int x;

READ(x);

WRITELN(SQ(x+1));

return 0;

}

程序输入4 输出25

C语言中,宏的运用,和指针作为函数参数的运用,两者有何区别。

宏的作用主要有:宏定义和宏替换。宏定义主要是定义一些参数,提供编译程序识别使用,实现条件编译,以屏蔽实现多平台差异、实现调试版和发行版等功能。宏定义可以简单的理解成字符替换,便于程序的编写和修改,如程序要多次取两个数中的教大值,可以定义宏:

#define max(a,b) ((a)(b)?(a):(b),语句 c = a b? a, b,就可以使用 c = max(a,b)。

又如,程序要多次使用 3.141592653,可以定义宏:#define PI 3.141592653,使用到3.141592653 的地方就用 PI 取代。

指针作为函数参数,将内存地址传递给函数,函数可以操控这个指针指向的内存数据。

C语言中带参数的宏定义问题

上面是 宏 定义。

第一行 DEFINE...SUITE 是宏函数名,小括号里是 三个 形式参数。 定义为 下面第二行开始 含 续行号的 所有的行。 程序中出现 DEFINE...SUITE 宏函数时,均用 它的 定义句 做字符替代。

定义句替代宏函数时,凡是有 三个形式参数 的地方,用 实际参数 做字符替代。

## 是 连接符,用于一个Token 与另 一个Token 的 连接,(Token 也可以是另外的宏,也可以不是)。

例子: 若形参_sym的实际参数 是 XYZ, 那么 _test_str_##_sym[] 变成 _test_str_XYZ[]。 这个 _test_str_XYZ 是 static const char型 数组的名字。

后面还有个 .name = _test_str_XYZ, 也是token的连接。


标题名称:c语言宏定义作为函数参数 c中如何宏定义函数名
文章转载:http://cdweb.net/article/docceoi.html