当我遇到这段代码时,我正在阅读一些C代码。
void someFunction(Int32 someVariable)
{
/* someVariable is hard coded to 2 */
(void)someVariable;
//some processing that has nothing to do with someVariable.
}
作者对评论意味着什么,“ someVariable被硬编码为2 ”?
究竟发生了什么someVariable
?
答案 0 :(得分:6)
最有可能的是(将函数参数转换为void
)以关闭编译器,否则会因未使用的参数而发出警告或错误。值是否在某处“硬编码”与所呈现的代码无关。
答案 1 :(得分:4)
声明
(void)someVariable;
将禁用任何编译器警告,表明函数中未使用参数someVariable
。
如果您查看后续代码,您可能会找到可以使用someVariable
值的地方,而是硬编码以假设它是2
。
答案 2 :(得分:2)
这意味着代码看起来像这样,例如:
// Somewhere else in the source:
…someFunction(2)…
…
…x = 2;…
…someFunction(x)…
…
// Et cetera, the point being that whenever someFunction is called, its argument always has the value 2.
// The definition of someFunction:
void someFunction(Int32 someVariable)
{
foo(someVariable*3);
y = someVariable*7 - 4;
bar(y);
…
}
并且作者将其更改为:
// The definition of someFunction:
void someFunction(Int32 someVariable)
{
(void) someVariable;
foo(6);
y = 10;
bar(y);
…
}
所以,发生的事情是:
换句话说,someFunction的代码现在的行为与someVariable为2时原始代码的行为方式相同。您将someFunction的主体描述为“某些与someVariable无关的处理”,但实际上它是使用2作为someVariable变量的处理。编辑中丢失了someVariable在函数中扮演的角色,但是,假设某些变量为2,这个代码的行为就像旧代码一样。