[英]Is this code segment legal in C?
函数wait()在另一个函数中声明。 这合法吗?
void panic(const int reason, const char *strg)
{
int ErrNo;
struct machine_attributes mach;
int ret, docstat, cnt;
pid_t pid, wait(int *), setsid(void);
......
}
谢谢!
是的,只要此声明与函数的实际定义相匹配。
pid_t pid, wait(int *), setsid(void);
该声明了三个实体: pid_t
名为pid
,函数(取int*
和返回pid_t
)命名的wait
和功能(不采取任何参数和返回pid_t
)命名setsid
。
pid
的声明也是一个定义。
是的,它是合法的C,在极少数情况下它可能是有用的,例如,如果你有一个普通的C(非POSIX导向)源文件,它使用static
链接wait
它自己的功能,突然意识到你需要从该文件中的函数调用POSIX wait
。 通过在调用它的函数中确定声明范围,可以避免与wait
的文件范围static
定义冲突。
请注意, pid_t
可以从其他未声明wait
(或任何函数)的标头中获取,但在其他情况下,由于缺少类型,您可能无法使用这样的技巧。
是的,有些人可能会称这是一种可怕的黑客/滥用语言。 :-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.