LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1263|回复: 11

可变宏!

[复制链接]
发表于 2003-6-6 22:09:02 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <math.h>
#define PR(X,...) printf("Message " #X ":"___VA_ARGS___)
int main (void)
{
double x=48;
double y;

y=sqrt(x);
PR(1,"x=%g\n",x);
PR(2,"x=%.2f,y=%.4f\n",x,y);

return 0;
}

好像这种可变宏的定义 不行哪,在用ANJUTA时通不过!
为什么?
发表于 2003-6-6 22:22:58 | 显示全部楼层
宏为什么要可变?可变的地方为什么要用宏?
发表于 2003-6-7 02:35:48 | 显示全部楼层
你们说可变宏意思就是参数个数不定的宏吧?

至于楼主的程序么,应该是 __VA_ARGS__ 不是 ___VA_ARGS___ ,改过来就好了。
 楼主| 发表于 2003-6-7 16:40:14 | 显示全部楼层
为什么在LINUX里用ANJUTA编译此程序时它说没有定义sqrt函数!
我明显包含了math.h吗!
为什么呀?是不是找不到路径呀?
发表于 2003-6-7 18:01:42 | 显示全部楼层
编译的时候加上-lm库连接选项,
anjuta里选:设定->编译器及连接器设定->函数库
在“可用函数库”里选“m  Math rouines”,点“新增”。
 楼主| 发表于 2003-6-7 23:32:43 | 显示全部楼层
其它的一些要不要都ADD上去 呀?
这些都是干什么的呢?都加上去没有影响吧?

另请版主:http://linuxsir.cn/forum.php?mod=viewthread&tid=43816
http://linuxsir.cn/forum.php?mod=viewthread&tid=43737


希望版主一定要帮我把这里面的问题回答一下.
我等了N天也没有人回答它!
发表于 2003-6-8 03:06:18 | 显示全部楼层
你不用的东西,干什么要加上去?
 楼主| 发表于 2003-6-8 10:41:04 | 显示全部楼层
我不知道我哪些要用,哪些不要用的呀!
其它的哪些一般会用到呢?为什么用math.h时要加这一个?
发表于 2003-6-8 11:55:43 | 显示全部楼层
因为默认不连接m库,你用到什么库就加什么。
 楼主| 发表于 2003-6-8 12:05:09 | 显示全部楼层
那为什么用其它的库的时候如:
string.h
ctype.h
stdio.h
stdlib.h
fcntl.h
unistd.h
时不用呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表