【发布时间】:2011-01-23 14:11:42
【问题描述】:
我有一个局部变量,仅用于检查另一个函数的结果并在满足某些条件时将其传递。大多数时候,这个标准永远不会得到满足。有什么办法可以避免这种“额外”的地方?
我的二进制文件只有大约 1MB 的存储空间,而且我有数千个遵循这种模式的函数调用。我知道这是一件小事,但如果有更好的模式我很想知道!
SomeDataType myclass::myFunction()
{
SomeDataType result; // do I really need this local???
// i need to check the result and pass it on if it meets a certain condition
result = doSomething();
if ( ! result ) {
return result;
}
// do other things here
...
// normal result of processing
return SomeDataType(whatever);
}
【问题讨论】:
-
澄清:我不太担心 RAM 的使用,因为我担心闪存消耗与我的可执行文件的大小有关。我确定它可以放入寄存器中,但是额外的本地会增加我的 obj 文件的大小。
-
我的第一个问题是,你真的需要单独的默认构造然后赋值吗?
SomeDataType result = doSomething();有什么问题?通过消除 SomeDataType::SomeDataType() 调用,这可能会节省更多闪存。 -
你可能是对的,我不需要默认构造。
-
“额外的本地会增加我的 obj 文件的大小” - 我不确定我是否遵循。额外的本地将如何增加 obj 文件的大小?它是驻留在 RAM(或寄存器)中的数据。
标签: c++ c embedded stack local