recv
我以前从未见过此语法:
ssize_t recv(int sockfd, void buf[.size], size_t size, int flags);
.
这个看起来像一个数组,void buf[.size]
void buf[]
.。
,但是,什么是
void*
对象?这看起来像是数组长度的参数。
表明编译器可能会为每个静态长度
.size
产生一个版本recv
。但这并没有任何意义,我无法想象这是编译器实际上在做的事情,因为.size
是库功能,是Linux插座库的一部分(已编译,编译器只是链接到针对它)
linux手动页面项目采用的语法是指缓冲区的大小由同一函数呼叫的
recv
参数描述。
Edit:找到了其他带有更详细讨论的stackoverflow线程:linuxmemcpy限制关键字语法