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,这是我唯一的解释猜测。
我会理解解决这个问题的线索或想法,但重新命名这个领域并不是特别有吸引力,应该完全无关紧要。
答案 0 :(得分:0)
这不太可能与CR / LF有关。
这个名称应该是无关紧要的,但事实并非如此:这个与MinGW所做的Windows集成有关,而Cygwin则没有,正如http://sourceforge.net/p/mingw/mailman/message/14901207/中提到的那样(该人试图使用extern {{}它希望由系统定义。显然,MinGW开发人员使这个变量可用的方式打破了名称作为结构成员的使用。)
您应该将此报告为MinGW错误。尽管不愉快,但在此期间,重命名成员是最简单的解决方法。有条不紊的environ
可能有所帮助,但无法保证。