使用常量而不是宏

Using constants instead of macros

本文关键字:常量      更新时间:2023-10-16

如果宏是用另一个宏定义的,是否可以用常量替换宏:

#define START_OFFSET    0
#define ADDRESS_OFFSET  (START + START_SIZE)
#define SIZE_OFFSET     (ADDRESS_OFFSET + ADDRESS_SIZE)
and so on

我不完全确定,如果我使用全局常量并用常量初始化它们,会发生什么。这可以被认为是安全的吗?

使用常量的原因是可以将它们封装到名称空间中。顺便说一句,我使用这样的宏只是为了处理存储在字节数组中的消息。

结构序列化是更好的选择吗?

我不完全确定,如果我使用全局常量并用常量初始化它们,会发生什么。它安全吗?

是的,那很好。

const int i = 4;
const int j = 6;
const int k = i + j; // legal

结构序列化是更好的选择吗?

这取决于你想要完成什么。现在,这个问题有点宽泛。C++中没有金锤。