繁体   English   中英

此代码段在C中是否合法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM