在本教程中关于C语言中的套接字编程,我偶然发现了以下行:
bzero((char *) &serv;_addr, sizeof(serv_addr));
Run Code Online (Sandbox Code Playgroud)
由于某种原因,变量serv_addr被写为serv;_addr将其作为参考传递.它看起来像一个拼写错误(并且似乎也没有使用标准标志进行编译),但是这种用法在整个代码中是一致的 - 每当包含下划线的变量名称作为引用传递时,在下划线之前插入分号:
if (bind(sockfd, (struct sockaddr *) &serv;_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
[...]
newsockfd = accept(sockfd,
(struct sockaddr *) &cli;_addr, &clilen;);
[... and some more occurences]
Run Code Online (Sandbox Code Playgroud)
这种一致的用法(据我所知,gcc似乎同意)无效的语法让我想知道这种现象是否有一些解释.
以前有人见过这样的代码吗?有任何想法如何意外生成这样的代码?