從C++過渡到現在,我正在學習C的黑暗藝術,並開發了以下代碼來取代我對模板的需求。在底部的例子中,我已經實現了你的花園式的Node結構,它可以用來存儲任何數據類型。考慮以下...C中的無警告模板C
// vptr.c
#include <stdio.h>
struct Node
{
void* data;
struct Node* next;
};
int main()
{
struct Node n0, n1;
n0.next = &n1;
n0.data = malloc(sizeof(int));
*((int*) n0.data) = 3;
printf("%d\n", *((int*) n0.data));
return 0;
}
同樣,問題在於警告這段代碼的免費編譯 - 即使用gcc編譯器,雖然我的wxDevCpp的Windows也給了我一些警告,但挑剔的要少得多關於它。我把它歸咎於GUI。
任何幫助將不勝感激。
如果可能的類型是有限的,你可以使用一個大的聯合(如果你想指向一個結構,它仍然可以包含一個void-pointer)。或者你可以使用一個字節向量(例如unsigned char [8]),它足夠大以存儲任何可能的數據類型,並使用memcpy存儲數據並進行轉換以從中獲取數據。 – Patrick 2010-10-12 13:12:34
工會值得使用嗎?這對我仍然不清楚。 – 2010-10-12 13:28:07