我目前正在研究Atmel AVR项目,并且想知道这两种方法中哪一种使用更少的内存。我正在使用8位Atmel Atmega328。我有一个值,我需要传递给多个外部函数(在类外)。
案例1:使用预处理器宏:
#define MY_VALUE 0x10
class MyClass
{
public:
MyClass ( );
void myMethod ( );
void myMethod2 ( );
};
// Constructor
void MyClass::myMethod ( )
{
externalFunction ( MY_VALUE );
}
void MyClass::myMethod2 ( )
{
externalFunction2 ( MY_VALUE );
}
案例2:使用const静态值:
class MyClass
{
public:
const static uint8_t MY_VALUE = 0x10;
MyClass ( );
void myMethod ( );
void myMethod2 ( );
};
// Constructor
void MyClass::myMethod ( )
{
externalFunction ( MyClass::MY_VALUE );
}
void MyClass::myMethod2 ( )
{
externalFunction2 ( MyClass::MY_VALUE );
}
或者它是否存在更好的方法来重用内存使用。
问题2:与结束相同,但我们使用uint8_t
或uint16_t
代替uint32_t
?
答案 0 :(得分:0)
案例1:使用处理器宏:如果内存是主要关注我建议去 #define 或枚举 因为与#define或enum相比, const 使用额外的内存。