免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1693 | 回复: 9
打印 上一主题 下一主题

定义了*ptr,为什么check说没有定义? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-20 15:50 |只看该作者 |倒序浏览
#include <sys/types.h>;
#include <sys/stat.h>;
#include "ourhdr.h"
int main( int argc,char *argv[] )
{
int     i;
struct stat buf;
char   *ptr;
     for (i=1 ; i<argc ; i++) {
         printf ("%s: ",argv);
             if(lstat(argv, &buf) <0) {
              fprintf(stderr,"lstat error\n";
              continue;
         }
              if      (S_ISREG(buf.st_mode))   ptr= "regular file";
              else if (S_ISDIR(buf.st_mode))   ptr= "directory file";
              else if (S_ISCHR(buf.st_mode))   ptr= "character file";
              else if (S_ISBLK(buf.st_mode))   ptr= "block special";
              else if (S_ISFIFO(buf.st_mode))  prt= "fifo file";
              else if (S_ISLNK(buf.st_mode))   ptr= "symbolic link";
              else if (S_ISSOCK(buf,st_mode))  ptr= "socket";
              else                             ptr= "unknown mode";
              printf("%s\n", ptr);
   }
exit (0);
}

这是check的结果:
# gcc -c print_file_type_cp.c
print_file_type_cp.c: In function `main':
print_file_type_cp.c:19: `prt' undeclared (first use in this function)
print_file_type_cp.c:19: (Each undeclared identifier is reported only once
print_file_type_cp.c:19: for each function it appears in.)
print_file_type_cp.c:21:44: macro "S_ISSOCK" passed 2 arguments, but takes just 1
print_file_type_cp.c:21: `S_ISSOCK' undeclared (first use in this function)

请帮指出错误,先谢了!!好奇怪   

论坛徽章:
0
2 [报告]
发表于 2003-12-20 16:05 |只看该作者

定义了*ptr,为什么check说没有定义?

老大,写错了,拼写错误!

论坛徽章:
0
3 [报告]
发表于 2003-12-20 16:30 |只看该作者

定义了*ptr,为什么check说没有定义?

错的厉害,好好看看吧

论坛徽章:
0
4 [报告]
发表于 2003-12-20 16:59 |只看该作者

定义了*ptr,为什么check说没有定义?

谢谢两位CUER,我是照书抄的,刚才看了几次,看不出错在哪里?请帮忙指出来吧。。。。
谢过先。。

论坛徽章:
0
5 [报告]
发表于 2003-12-20 17:03 |只看该作者

定义了*ptr,为什么check说没有定义?

这行:
else if (S_ISFIFO(buf.st_mode)) prt= "fifo file";
中的ptr拼写成prt;

你还没看出来吗?

论坛徽章:
0
6 [报告]
发表于 2003-12-20 20:42 |只看该作者

定义了*ptr,为什么check说没有定义?

原帖由 "lylzp" 发表:
这行:
else if (S_ISFIFO(buf.st_mode)) prt= "fifo file";
中的ptr拼写成prt;

你还没看出来吗?


谢谢~~大家,我太粗心了。

但仍不能通过:
好象不能定义S_ISSOCK.

# gcc -c print_file_type_cp.c
print_file_type_cp.c:21:44: macro "S_ISSOCK" passed 2 arguments, but takes just 1
print_file_type_cp.c: In function `main':
print_file_type_cp.c:21: `S_ISSOCK' undeclared (first use in this function)
print_file_type_cp.c:21: (Each undeclared identifier is reported only once
print_file_type_cp.c:21: for each function it appears in.)

发现有这个宏:
# cat stat.h|grep S_ISSOCK
# define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)

论坛徽章:
0
7 [报告]
发表于 2003-12-21 09:59 |只看该作者

定义了*ptr,为什么check说没有定义?

else if (S_ISSOCK(buf,st_mode)) ptr= "socket";
你的结构运算符不能用逗号把,
而且,在POSIX.1 或SVR 4没有S_ISSOCK和S_ISLNK两个类型!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2003-12-21 10:19 |只看该作者

定义了*ptr,为什么check说没有定义?

编译错误说的很清楚,不知为什么你不明白。
你这叫看书吗?

论坛徽章:
0
9 [报告]
发表于 2003-12-21 11:26 |只看该作者

定义了*ptr,为什么check说没有定义?

# define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)

你难道还没看明白吗,这个宏只有一个参数的

论坛徽章:
0
10 [报告]
发表于 2003-12-21 13:28 |只看该作者

定义了*ptr,为什么check说没有定义?

原来是,号,我一直没注意检查符号的错误。嘿嘿~~~谢谢大家帮我指出错误。。
我英语也莱,所以不懂它说什么。。。

to quil:

# define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)

这个真的不懂的是什么意思,格式也看不明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP