C中变量名中下划线前加分号的可能原因

C中变量名中下划线前加分号的可能原因,c,syntax,C,Syntax,关于C中的socket编程,我无意中发现了以下几行: bzero((char *) &serv;_addr, sizeof(serv_addr)); 由于某种原因,变量serv_addr被写为serv_addr当它作为引用传递时。它看起来像一个输入错误(并且似乎不使用标准标志编译),但是这种用法在整个代码中是一致的-每当包含下划线的变量名作为引用传递时,在下划线之前插入分号: if (bind(sockfd, (struct sockaddr *) &serv;_addr,

关于C中的socket编程,我无意中发现了以下几行:

bzero((char *) &serv;_addr, sizeof(serv_addr));
由于某种原因,变量
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]
if(绑定(sockfd,(结构sockaddr*)&serv;\u addr,
sizeof(服务地址))<0)
错误(“绑定错误”);
[...]
newsockfd=接受(sockfd,
(struct sockaddr*)&cli;u addr;&clilen;);
[…还有更多的事件]
这种(据我所知,gcc似乎同意)无效语法的一致使用让我想知道是否有某种解释可以解释这种现象

以前有人见过这样的代码吗?你知道这样的代码是如何意外生成的吗

以前有人见过这样的代码吗

不是我

你知道这样的代码是如何意外生成的吗

查找并替换操作


作者找到了他想要替换的东西,不小心用
serv替换了它_addr
,它在原始字符串的所有出现处自动使用。

这似乎与下划线(
)没有任何关系;相反,它看起来像是一次失败的尝试,试图规范化符号(
&
)。在HTML中使用符号和结构来表示特殊字符(除其他形式外)
&name。例如,
用于
哇!你在网上发现了垃圾!;-)这可能是将代码作为HTML插入网页的一个特性,它不会编译。你完全没有理由对整个事情作进一步的考虑。这似乎是由于提供XML字符定义的尝试失败而导致的。您只需要了解一个关于XML字符定义的教程。这是作者写的。上帝保佑他的灵魂安息!它看起来像是一次失败的“规范化”符号的尝试,将源代码中的每一个符号和后跟一些字母的序列转换为HTML中的符号和后跟字母和分号(以及或随后将
&
转换为
&
)。另一个例子是
(struct sockaddr*)&cli_地址:&clilen;)
其中
clilen
也受影响,但没有下划线。还有
&cli_addr
,因此只需在
&serv_addr
没有解释这个问题。
(struct sockaddr *) &cli;_addr, &clilen;);
(sockfd, (struct sockaddr *) &amp;cli;_addr, &amp;clilen;);