c - 为什么在参数声明中只能使用 "register"存储类说明符?

标签 c

为什么下面的代码片段会产生错误?

int fun(auto int arg)
{
    return 1;
}

如果我使用“register”代替“auto”,它工作正常。这背后有什么原因吗?还是只是定义 C 标准的方式?

最佳答案

允许 register 可能是编译器还不够复杂,无法像人类一样或更好地优化寄存器分配的时代的历史产物。当时希望告诉编译器应该在 CPU 的一个寄存器中传递特定参数,而不是通过堆栈帧。

没有其他存储类说明符在这里可能有意义:您不能将参数作为 externstatic 传递,而 auto 会造成混淆。

关于c - 为什么在参数声明中只能使用 "register"存储类说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45237823/

相关文章:

c - 如何仅在配置脚本中启用时使用库

C文件输入/梯形规则程序

c - Misra-C 与 X-macros 兼容吗?

C 中的 cacosf(复反余弦)函数返回不定值

c++ - 如何枚举 vfs c 或 c++ 目录中的所有文件?

C 编程 : Strange looking array declaration

c - 用里面的结构类型初始化一个结构

C代码到快速转换

c++ - 递归目录和文件流以及搜索字符串

c - 空指针的 Golang 等价物是什么