|
1、系统描述:
本人系统:FC6
内核: 2.6.20-1.2952.fc6
GCC版本: 4.1.1 20061011 (Red Hat 4.1.1-30)
2、问题描述:
pid_t不是一个类型吗?
在BLP的13章有这样的用法:直接把(pid_t)当作一个数来用;
小弟后来试了一下:
.........
printf("(pid_t) -1= %d\n",(pid_t)-1 );
printf("(int)-1 = %d\n",(int)-1);
printf("(char)-1 = %d\n",(char)-1);
printf("(long)-1 = %d\n",(long)-1);
printf("(pthread_t)-1 = %d\n",(pthread_t)-1);
.............................
输出:
(pid_t) -1= -1
(int)-1 = -1
(char)-1 = -1
(long)-1 = -1
(pthread_t)-1 = -1
看来GCC编译器认为(pid_t)这种用法,就当作一个数了,很显然这里"类型的值"=0,可是当我想不做算术操作,单独输出一个(pid_t)时编译就会报错,如下:
.................
printf("(pid_t)= %d\n",(pid_t) ); //line 19
.................
这样用,编译报错:
pipe5.c: 在函数 ‘main’ 中:
pipe5.c:19: 错误:expected expression before ‘)’ token
这个难道是C99区别traditional C的新特性,请高人指点,谢谢 |
|