首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中注册关键字

在C++中注册关键字
EN

Stack Overflow用户
提问于 2010-07-09 03:04:16
回答 6查看 100.4K关注 0票数 96

它们之间的区别是什么

代码语言:javascript
复制
int x=7;

代码语言:javascript
复制
register int x=7;

我正在使用C++。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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;的等价物。

票数 26
EN

Stack Overflow用户

发布于 2010-07-09 03:21:06

根据Herb Sutter的说法,register是"exactly as meaningful as whitespace“,对C++程序的语义没有影响。

票数 48
EN

Stack Overflow用户

发布于 2010-07-09 03:05:55

用今天的编译器,可能什么都没有。它最初是一个将变量放在寄存器中以便更快访问的提示,但现在大多数编译器都忽略了这个提示,并自行决定。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3207018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档