我有一個包含下面的代碼邏輯的遺留代碼:類型轉換爲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