为什么下面的代码片段会产生错误?
int fun(auto int arg)
{
return 1;
}
如果我使用“register”代替“auto”,它工作正常。这背后有什么原因吗?还是只是定义 C 标准的方式?
最佳答案
允许 register
可能是编译器还不够复杂,无法像人类一样或更好地优化寄存器分配的时代的历史产物。当时希望告诉编译器应该在 CPU 的一个寄存器中传递特定参数,而不是通过堆栈帧。
没有其他存储类说明符在这里可能有意义:您不能将参数作为 extern
或 static
传递,而 auto
会造成混淆。
关于c - 为什么在参数声明中只能使用 "register"存储类说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45237823/