【发布时间】:2014-07-11 18:51:39
【问题描述】:
我试图理解,将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 说明符适用于函数参数?
【问题讨论】:
-
在任何地方应用它有什么意义?
-
没有意义。
register是一个无操作,无论是否应用于参数。它的存在只是为了向后兼容。话虽如此:对于大多数意图和目的来说,函数参数是一个局部变量。在某种程度上register对局部变量有意义,它对参数同样有意义。 -
很可能 [dcl.stc]/3 也适用于函数参数:“
register说明符暗示了这样声明的变量将被大量使用的实现。” -
请注意,“不推荐使用
register关键字作为 storage-class-specifier。” [depr.register]
标签: c++ register-keyword