我曾读到,如果我从来没有从回main()
圈,我可以抽出〜66个字节,而在一些编译器开关avr-gcc
,但我无法再找到该网站。
这是针对嵌入式的:
main() {
while(1)
{
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
因为gcc
您可以使用特殊属性来指示您的函数不返回:
int main() __attribute__ ((noreturn)) {
for (;;) {
// do stuff
}
__builtin_unreachable ();
}
Run Code Online (Sandbox Code Playgroud)
(可选)您可以添加__builtin_unreachable ();
以指示代码的某些部分永远无法到达。
尽管在大多数情况下可以通过优化标志正确识别,但如果没有优化标志,while(1)
则生成的代码可能超过for(;;)
。