我想轉換一個自定義的字符常量(在頭文件中使用#define
)持有一個端口號,爲一個無符號的短整型(爲了能夠使用htons()來處理它獲得網絡Byte-訂購)。 我在一個單獨的頭文件中定義了一個結構,將PORT,HOSTNAME和GAMEKINDNAME分組(我相信常量名稱非常明瞭,它們都分別存儲爲char數組)。自定義字符數組常量類型轉換爲unsigned short?
初始化結構的規格如下所示:
struct Config configuration_parameters = {
.type_of_game = GAMEKINDNAME,
.hostname = HOSTNAME,
.port = (unsigned short) PORT
};
在編譯時,我收到以下錯誤:
warning: cast from pointer to integer of different size
error: initializer element is not constant
我認爲這可能是由以下事實引起的焦炭用途1字節的存儲,而無符號短使用2字節的存儲空間,這可能表示某種衝突......這種假設是否正確,如果是的話(或者即使不是),任何人都有如何解決這個問題的想法?
任何幫助,將不勝感激!
爲什麼將它定義爲字符常量?如果它是一個常量,並且你確實需要它是一個字符常量,那麼定義第二個'#define PORT_S 80'(將varname和value替換爲任何適合的值)並使用它。 – Jite