【发布时间】:2013-12-12 09:57:05
【问题描述】:
C115.1.2.2.1 说
it [main()] 应定义为返回类型 int
但是,第 6.7.4 节介绍了 _Noreturn 关键字,这对于准系统嵌入式系统的main() 似乎非常有用。
声明不可返回的 main() 最优雅的方式是什么?是_Noreturn int main(void)吗?
【问题讨论】:
-
这是什么意思?为什么不直接使用
int main(void)?它是标准的、可移植的和非 gcc 特定的。 -
@user694733 因为他使用的是准系统嵌入式系统,其中 1)
int main (void)没有任何意义 2)void main (void)是 100% 标准和 100% 可移植的。 Read this. -
(......然后人们继续对一些困惑的 PC 程序员的评论进行投票。希望你能对 cmets 投反对票。)
-
它是嵌入式的——谁在乎它是否永远不会返回。我根本不明白这种担心。这肯定不是问题吗?
-
@MartinJames 通常,裸机嵌入式系统从重置 ISR 开始执行,该 ISR 反过来又调用 main。如果 main 的调用约定是
int main(),那么重置 ISR 将为堆栈上的返回值腾出空间,即使 main() 永远不会返回。
标签: c language-lawyer