0
使用g_signal connect,我試圖使用「data」字段傳遞一個簡單字符'S'的參數。c使用數據字段的GTK g_signal_connect
???(我想我明白該字段不是用於數據,而是用於指向數據的指針)。
無論如何,我有這樣的代碼:
g_signal_connect (G_OBJECT(b_save), "clicked", my_test, (gpointer) 'S');
調用代碼是這樣的:
void my_test(GtkMenuItem *menuitem, gpointer data)
{
printf("Pointer variable contains: %p\n", data);
}
我不知道是否應該my_test接受兩個參數或一個? 我不知道如何打印指向值'S'。 (在我的調用函數my_test我如何才能在「S」?)
我還沒有整理它out.Does my_test接收一個或兩個參數? –
我還沒有整理出來。好的,我把:靜態char數據='S',並在調用中使用&數據。 my_test是否接收一個或兩個參數?它應該怎麼看?和printf(「數據變量包含:%c \ n」,(char)數據);產生編譯器錯誤:警告:從指針轉換爲不同大小的整數[-Wpointer-to-int-cast]。 –
@GraemeJensz - 我提出了兩個獨家選擇。你要麼保持傳遞一個常量,要麼傳遞一個地址。如果你將一個地址傳遞給一個角色,那麼就把它當作(我更新了答案)。如果您將字符值本身傳遞(在投射到指針後),則需要將其轉換回字符。爲了擺脫這個警告,在鑄造到char之前(即'(char)(int)data')進行中間轉換爲'int'或'long'。 – StoryTeller