我想使用一个幻数作为常量来检查内存块是否被破坏,是否有一种“反向检查”的方法将签名恢复为十六进制格式MAGIC_32BIT

 #define MAGIC_32BIT 0x77A5844CU
 int signature = (int)MAGIC_32BIT;

另外,我想用一个更具创造性的魔术数字,有什么关于产生它们的想法或遵循的规则吗?没有冒犯,但我听说了微软的0xB16B00B5,我希望我的更具人性化的“可读性”。

最佳答案

是的,我找到了答案,直接用宏检查,cegfault的wiki评论显示,int变量是互变的,不需要使用强制转换。

#define MAGIC_NUM 0x8BADF00D
#define CHECK_SIG(A) (A == MAGIC_NUM)

关于c - C中的魔数(Magic Number),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12024408/

10-11 19:34