我有一个包含下面的代码逻辑的遗留代码:类型转换为unsigned long long到字符指针用C
unsigned long long address; /* Its content = Some Address, not a normal value */
strcmp (address, (const char*)some_char_buffer);
这给了与海湾合作委员会的警告。
有人可以建议一些方法来将变量'地址'转换为char指针,以便它可以正确解码,并且gcc不会给出警告吗?
我想说明一点,你应该使用'stdint.h'中的'intptr_t'或'uintptr_t'来存储指针值为整数。否则,您可能会失去精确度(或者,获得精确度,当您转换回来并可能导致类似问题时将丢失精度)。 – 2012-02-21 04:00:16
如果没有任何问题,克里斯,它不会是遗留代码...作为现代化工作的一部分,您的建议是明智的。我注意到,在这个问题中'const char *'强制转换可能是不需要的,除非'some_char_buffer'实际上是'unsigned char'(或者更不可能是'signed char')。 – 2012-02-21 04:42:27
@JonathanLeffler - 我有一个可怕的倾向,跳到代码部分,我完全错过了第一行中的“遗留代码”。我觉得现在有点傻... – 2012-02-21 05:25:41