它们之间的区别是什么
int x=7;
和
register int x=7;
我正在使用C++。
发布于 2010-07-09 05:35:22
在2010年存在的C++中,任何使用关键字"auto“或"register”的有效程序在语义上都与删除这些关键字的程序相同(除非它们出现在字符串宏或其他类似的上下文中)。从这个意义上说,关键字对于正确编译程序是无用的。另一方面,关键字在某些宏上下文中可能很有用,以确保宏的不正确使用将导致编译时错误,而不是生成虚假代码。
在C++11和该语言的更高版本中,auto
关键字被重新用于充当已初始化的对象的伪类型,编译器将自动将其替换为初始化表达式的类型。因此,在C++03中,声明:auto int i=(unsigned char)5;
在块上下文中使用时等同于int i=5;
,而auto i=(unsigned char)5;
违反了约束。在C++11中,auto int i=(unsigned char)5;
变成了一种违反约束的行为,而auto i=(unsigned char)5;
变成了auto unsigned char i=5;
的等价物。
发布于 2010-07-09 03:21:06
根据Herb Sutter的说法,register
是"exactly as meaningful as whitespace“,对C++程序的语义没有影响。
发布于 2010-07-09 03:05:55
用今天的编译器,可能什么都没有。它最初是一个将变量放在寄存器中以便更快访问的提示,但现在大多数编译器都忽略了这个提示,并自行决定。
https://stackoverflow.com/questions/3207018
复制相似问题