【发布时间】:2014-04-15 21:43:21
【问题描述】:
我在某处读到,如果我永远不会从 main() 循环返回,我可以通过 avr-gcc 中的一些编译器开关节省 ~66 字节,但我再也找不到该站点了。
这是嵌入式的:
main() {
while(1)
{
// do stuff
}
}
【问题讨论】:
我在某处读到,如果我永远不会从 main() 循环返回,我可以通过 avr-gcc 中的一些编译器开关节省 ~66 字节,但我再也找不到该站点了。
这是嵌入式的:
main() {
while(1)
{
// do stuff
}
}
【问题讨论】:
对于gcc,您可以使用特殊属性来指示您的函数不返回:
int main() __attribute__ ((noreturn)) {
for (;;) {
// do stuff
}
__builtin_unreachable ();
}
您也可以选择添加__builtin_unreachable (); 以指示代码的某些部分永远无法访问。
虽然在大多数情况下可以被优化标志正确识别,但没有这样的 while(1) 可以生成比 for(;;) 更多的代码。
【讨论】:
【讨论】:
找到了! 如果你确定你的主程序永远不会退出,你可以在编译时使用“-mendup-at=main”标志。这将节省 6 个字节的 ROM。
【讨论】: