c - C 中的魔数(Magic Number)

标签 c magic-numbers

我想使用一个魔数(Magic Number)作为常量来检查内存块是否未被侵犯,是否有一种“反向检查”的方法可以将签名恢复为 MAGIC_32BIT 的十六进制格式>

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

此外,我想使用更有创意的魔数(Magic Number),关于生成它们的任何想法或要遵循的规则?无意冒犯,但我听说过微软的 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/

相关文章:

c - 具有低/高字和低/高字节的 DWORD 变量

perl - 如何使用 Perl 获取文件的大小(以兆字节为单位)?

c++ - 这些会被认为是神奇的数字吗?

java - setbounds 值是魔数(Magic Number)

c - 如何使用 mmap 映射文件,同时在文件之前分配一个空页?

c - 是否可以显示异步IO的进度

c - 运行数字转换器程序时出现段错误

c - 仅给出成员位置时结构的位置

Java Main 方法魔数(Magic Number)

c - 文件中的魔数(Magic Number)。 C语言编程