gpt4 book ai didi

C2061语法错误标识符 'wait'由非法声明引起?

转载 作者:行者123 更新时间:2023-11-30 15:54:48 27 4
gpt4 key购买 nike

给定:
将库从 unix (COMPAQ Tru 64)DEC ALPHA 移植到 w32 XP sp3 操作系统。语言:unix平台上的C代码,使用c89编译器构建选项:c89 -c -O -DLOWER_U -DSOLARIS sychld.c

仅使用带/c(仅编译)选项的 MS Visual Studio 2010 C 编译器

问题:
收到错误 wait.h(79): C2061 语法错误标识符“wait”代码:

77:#ifndef _BSD             /* POSIX definition of wait() */
78:#ifdef _NO_PROTO
79:extern pid_t wait();
80:#else
81:_BEGIN_CPLUSPLUS
82:extern pid_t wait(int *);
83:_END_CPLUSPLUS
84:#endif /* _NO_PROTO */
85:#endif /* _BSD */

请注意,变量是在条件语句中声明的。第 79 行的 var 也在第 285 行声明。

284:#ifdef _NO_PROTO
285:extern pid_t wait();
286:extern pid_t wait3();
287:#else
288:
289:_BEGIN_CPLUSPLUS
290:extern pid_t wait(union wait *);
291:#include <sys/resource.h> /* contains rusage struct for wait3 */
292:extern pid_t wait3(union wait *, int, struct rusage *);
293:_END_CPLUSPLUS
294#endif /* !_NO_PROTO */

我不是一位经验丰富的 C 程序员,但我觉得如果我创建一个临时变量,那么我只会做一个声明。如何在不影响代码完整性的情况下做到这一点?

这就是我收到错误的原因吗??????

最佳答案

第 79 行不是声明变量,而是声明函数。

编译器提示的实际问题(尽管消息远未明确)是它不知道 pid_t 是什么。

您更大的问题(如果您的代码使用 wait())是 Windows 不支持生成进程的 Unix fork 模型 - 至少在不使用 POSIX 子系统(我什至不确定 Windows 是否不再支持)或使用 Cygwin图书馆。我怀疑 Cygwin 可能是轻松移植应用程序的最佳选择,但如果没有有关该应用程序的更多信息以及 Cygwin 许可是否可接受,就很难知道这一点。

关于C2061语法错误标识符 'wait'由非法声明引起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12733441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com