我看到了一个enum
的定义,如下所示:
enum DAY{MON = 1, TUE, WED, THU, FRI, SAT, SUN,};
...并且编译成功。
要在最后一个元素确定后添加一个额外的“,”吗?
答案 0 :(得分:4)
此声明:
<html>
<head>
<style>
section{
margin: 200px;
}
</style>
</head>
<body>
<div class="aims-form">
<div class="aims-form__navigation">
<ul>
<li>
<a onClick="scrollToAchor('section1')" class="aims-form__anchor">Section 1</a>
</li>
<li>
<a onClick="scrollToAchor('section2')" class="aims-form__anchor">Section 2</a>
</li>
<li>
<a onClick="scrollToAchor('section3')" class="aims-form__anchor">Section 3</a>
</li>
<li>
<a onClick="scrollToAchor('section4')" class="aims-form__anchor">Section 4</a>
</li>
</ul>
</div>
<div class="aims-form__form">
<section>
Section 1<a name="section1"></a>
<br>
Content coming soon...
</section>
<section>
Section 2<a name="section2"></a>
<br>
Content coming soon..
</section>
<section>
Section 3<a name="section3"></a>
<br>
Content coming soon..
</section>
<section>
Section 4<a name="section4"></a>
<br>
Content coming soon..
</section>
</div>
</div>
<div style="margin-bottom: 500px;"></div>
<script>
function scrollToAchor(where) {
var element = document.querySelector('.aims-form__form').querySelector('a[name="' + where + '"]');
var position = element.offsetTop;
for(let i = 10; i <= position; i+=10){
setTimeout(function(){
window.scrollTo(0, i);
}, i/2);
}
}
</script>
</body>
</html>
...与...相同:
enum DAY{MON = 1, TUE, WED, THU, FRI, SAT, SUN,};
要了解允许使用此语法的优势,请查看@chqrlie's answer。
答案 1 :(得分:4)
,
定义或数组初始化程序中的结尾enum
是可选的,但非常有用,尤其是在跨越多行的列表中。从C99开始,出于对称性考虑,允许这样做,因为它避免了列表中最后一项的不同语法:
enum DAY {
MON = 1,
TUE,
WED,
THU,
FRI,
SAT,
SUN,
};
它使使用脚本生成数组内容变得更加容易,并且避免了容易出错的情况,在这种情况下,向数组添加额外的元素却忘记添加逗号可能不会被注意:
const char *osnames[] = {
"CP/M",
"MS/DOS",
"Windows"
}
添加其他项目:
const char *osnames[] = {
"CP/M",
"MS/DOS",
"Windows"
"Linux",
"OS/X"
};
请注意列表中间缺少逗号:编译器将第三个字符串解析为"WindowsLinux"
,并且该错误不会产生语法错误。
每行末尾有,
,无需修改其他行即可轻松添加和删除项目。如以下示例所示,如果有条件地编译行,则更加有用:
const char *osnames[] = {
"CP/M",
"MS/DOS",
"Windows",
#ifdef __UNIX__
"Linux",
"OS/X",
#endif
};