0

我试图理解,将register说明符应用于函数参数有什么意义。以下代码有效:

#include <iostream>

using std::cout;

struct A
{
    A(){ cout << "A\n"; } 
    ~A(){ cout << "~A\n"; }
};

void foo(register A a)
{
}

int main()
{
    cout << "first line\n";
    foo(A());
    cout << "last line\n";
}

为什么register说明符适用于函数参数?

4

1 回答 1

2

register是一个古老的关键字,其起源可以追溯到 K&R C。它的目的是提示编译器将变量保留为处理器寄存器,而不是从内存中加载和卸载数据,这会产生开销。当您经常访问此变量时,您在将其声明为寄存器时保存的一两条指令在当时非常有价值。

从那时起,编译器在优化你的代码方面变得非常擅长,而这个关键字失去了它的作用。现在大多数实现都会忽略它,除非您告诉编译器无论如何都要使用它。

于 2014-07-11T19:01:41.260 回答