免费注册 查看新帖 |

Chinaunix

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

[C] POSIX多线程程序设计 一书中 errors.h用gcc编译总是出错,请高手指点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-14 10:28 |只看该作者 |倒序浏览
在Fedora9 环境下, POSIX多线程程序设计 一书中某程序代码如下:

/* errors.h*/
#ifndef __errors_h
#define __errors_h

#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifdef DEBUG
# define DPRINTF(arg) printf arg
#else
# define DPRINTF(arg)
#endif

#define err_abort(code,text) do { \   
  fprintf (stderr, "%s at \"%s\":%d: %s\n", \   
  text, __FILE__, __LINE__, strerror(code)); \ abort (); \
  } while (0)
#define errno_abort(text) do { \   
  fprintf (stderr, "%s at \"%s\":%d: %s\n", \   
  text, __FILE__, __LINE__, strerror (errno)); \  
  abort (); \   
  } while (0)
#endif



/*hello.c */
#include <pthread.h>
#include "errors.h"
void *hello_world (void *arg){ printf ("Hello world\n");   
  return NULL;}
int main (int argc, char *argv[])
{   
pthread_t hello_id;
int status;
status = pthread_create (&hello_id, NULL, hello_world, NULL);  
if (status != 0) err_abort (status, "Create thread");  
status = pthread_join (hello_id, NULL);
if (status != 0) err_abort (status, "Join thread");
  return 0;
}

问题主要出在 errors.h中 ,用gcc编译时,系统总是提示:_FILE 未声明,_LINE_未声明,但是没找到出错原因,敬请高手指点

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2010-06-14 11:28 |只看该作者
到底是__FILE__还是_FILE ?
__FILE__和__LINE__是c语言内置的宏。
你把错误信息贴出来。

论坛徽章:
0
3 [报告]
发表于 2010-06-14 19:12 |只看该作者
回复 2# lenovo


    没错,就是_FILE_ , _LINE_ ,用gcc编译后,出错信息为:

   "_FILE_"未声明(在函数内第一次使用);
   "_LINE_"未声明(在函数内第一次使用);

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2010-06-14 22:12 |只看该作者
看仔细了,应该是__FILE__,而不是_FILE_。

论坛徽章:
0
5 [报告]
发表于 2010-06-15 09:06 |只看该作者
这个问题很奇怪,建议lz把错误详细列出来。。

论坛徽章:
0
6 [报告]
发表于 2010-06-15 09:26 |只看该作者
回复 4# lenovo


    谢谢你的关注和回复,我刚刚试了一下,的确应该是__FILE__,而不是_FILE_,问题已解决。

论坛徽章:
0
7 [报告]
发表于 2010-06-15 09:27 |只看该作者
回复 5# rain_fish

问题已解决,谢谢你的关注。

论坛徽章:
0
8 [报告]
发表于 2010-06-15 09:29 |只看该作者
回复 2# lenovo


    问题解决了,谢谢你的关注。

论坛徽章:
0
9 [报告]
发表于 2010-06-15 10:16 |只看该作者
哥哥 你这个错误 不应该阿。。。 __FILE__ 怎么看也不是一个_阿。呵呵

论坛徽章:
0
10 [报告]
发表于 2010-06-21 15:24 |只看该作者
回复 9# zqy1005


    确实是大意了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP