MinGW的gcc报告了Cygwin接受的错误

时间:2014-09-14 13:59:34

标签: gcc cygwin mingw

当我尝试编译Expstack.c时,MingGW' gcc(4.8.1)报告了以下错误(以及更多内容):

  parser.h:168:20: error: field '__p__environ' declared as a function
        struct term *environ;

其中'环境'在结构词{...}'内声明。在unistd.h中,您会找到

  char **environ

但无处可见' __ p__environ'。

其他一些领域同样被宣布,但被接受。与environ相关的后续错误报告如下

  Expstack.c:1170:38: error: expected identifier before '(' token
  case Term_src: return e->item.src->environ;
                                  ^

Cygwin的gcc(4.8.3)接受这些结构,并且已经在各种版本中完成了 至少2006年,以及之前使用各种版本的Linux的gcc。

尽管我尝试转换为DOS,源文本仍然使用CRLF,这是我唯一的解释猜测。

我会理解解决这个问题的线索或想法,但重新命名这个领域并不是特别有吸引力,应该完全无关紧要。

1 个答案:

答案 0 :(得分:0)

这不太可能与CR / LF有关。

这个名称应该是无关紧要的,但事实并非如此:这个与MinGW所做的Windows集成有关,而Cygwin则没有,正如http://sourceforge.net/p/mingw/mailman/message/14901207/中提到的那样(该人试图使用extern {{}它希望由系统定义。显然,MinGW开发人员使这个变量可用的方式打破了名称作为结构成员的使用。)

您应该将此报告为MinGW错误。尽管不愉快,但在此期间,重命名成员是最简单的解决方法。有条不紊的environ可能有所帮助,但无法保证。