Mr *_*ser 11 c declaration auto c23
C23 标准显然引入了使用“auto”关键字进行自动类型推导,请参阅此处,就像 C++11 中一样。然而,似乎存在一些差异。
根据here,https://en.cppreference.com/w/cpp/keyword/auto,在C++11之后,不再auto是C++中的存储持续时间说明符。
然而,我无法轻易找到 C23 的等效声明。在C23中是否仍然auto是C中的存储类说明符?
还可以int auto x = 1;用C23写吗?
编辑:第一个问题的答案是肯定的。但正如 Andrew Henle 在下面的评论中指出的,第二个问题是不同的:
还可以float auto x = 1;用C23写吗?
正如 @AndrewHenle 和 @VladfromMoscow 在标准文档中引用的那样,6.7.1 存储类说明符,第 4 段
auto 仅应出现在具有文件范围的标识符的声明说明符中,或者如果要从初始值设定项推断类型,则应与其他存储类说明符一起出现。
float auto x = 1;如果此声明不在文件范围内,则这似乎不涵盖这种情况。
这句话的解释是什么?
还有一个问题:这句话看起来很混乱,因为我们肯定可以使用 auto 而无需“其他存储说明符”,不是吗?喜欢auto a = 1;。
是的,auto仍然是 C23 中的存储类说明符:
请参见6.7.1 存储类说明符:
autoconstexprexternregisterstaticthread_localtypedef