| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1629 人关注过本帖
标题:【提问】C库函数调用与参数宏的区别!
取消只看楼主 加入收藏
丁月文
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-23
收藏
 问题点数:0 回复次数:4 
【提问】C库函数调用与参数宏的区别!
以求最大值为例!!!

(1)使用库函数:
#include <stdlib.h>
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=max(a,b);
printf("This is %d.\n",t);
getch();
}

(2)使用宏定义:
#define max(a,b) (a)>(b)?(a):(b)
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=max(a,b);
printf("This is %d.\n",t);
getch();
}

请指点下:
一、
不知,(1)中在预编译后,是把库函数中的所以内容都被包括进来,还是只包括了,max()函数?

二、
我看了它的库函数,其中对max()的定义是这样的:
#define max(a,b) (((a) > (b)) ? (a) : (b))
(不知我这么说对不对?)按这样的话,在预编译后,那不就和例(2)的一样了吗?这不就,使得函数和预编译没区别了吗???又何来的函数调用???倒完全成了一个预处理了!!!


小弟对此处不是很明白,望大家指点一二!不胜感激!!!先谢过!!!
搜索更多相关主题的帖子: 库函数 参数 max 
2006-06-08 14:59
丁月文
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-23
收藏
得分:0 

哦,谢谢!!!
我再看看!

2006-06-08 15:12
丁月文
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-23
收藏
得分:0 
#include "max.c"
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=max(a,b);
printf("This is %d.\n",t);
getch();
}

若我自己也写个max.c文件,上面这个程序,也是个函数调用吧???那么在预处理后,是否就成为如下:
(和发表中的(2)一样吧!)
#define max(a,b) (a)>(b)?(a):(b)
main()
{
int a,b,t;
scanf("%d%d",&a,&b);
t=max(a,b);
printf("This is %d.\n",t);
getch();
}

而(2)在预编译后,其中的max(a,b)则会被替代!
2006-06-08 15:22
丁月文
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-23
收藏
得分:0 
呵,是这样,你说对了,
我以为只要在库函数中的就是函数调用!!!
那就是说,我的第一个例子,实际上是个间接的宏定义了!!!!
呵,我问题清楚了,谢谢!!!

而这样,这两个相比,最好的,还是第二个例子了,那样,代码也小,对吧?
直接宏定义,不用包含那个库函数反好些了。
2006-06-08 17:23
丁月文
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-23
收藏
得分:0 
谢了,把我的问题解决了,呵呵

一开始当然知道函数调用与宏的不同,

只是我后来看了库函数,才发现有那些宏定义,

想到宏定义,一比较,就想不通了,

原来,我一直以为用include调用库函数了,那就是函数调用!晕,这么简单的问题,这样说出来,我反明白了,呵呵!

谢过大家了!!!很简单的,让我给搞复杂了!
2006-06-08 17:35
快速回复:【提问】C库函数调用与参数宏的区别!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012010 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved