2012-03-06 72 views
-1

能幫有關使代碼純C.更改cpp的代碼轉換爲C(結構類型)

struct edge 
{ 
    char key; 
    char values[5]; 
}; 

edge* a = new edge[9]; 
+1

此代碼甚至不會編譯爲C++。你必須提供一個最小的工作代碼示例並提出你的問題。 – 2012-03-06 21:23:00

+1

只需將最後一行更改爲'struct edge * a = malloc(sizeof(* a)* 9)'。 – 2012-03-06 21:23:23

+0

目前尚不清楚你想達到什麼目的。你想創建9個'struct edge'實例嗎?此外,CPP意味着C預處理器,但您的意思是C++,這是完全不同的事情。 – DarkDust 2012-03-06 21:24:52

回答

6
typedef struct 
{ 
    char key; 
    char values[5]; 
} edge ; 

edge *a = malloc(9 * sizeof(edge)) ; 

這應該這樣做

+0

發出如下錯誤:「Initalizer元素不恆定。」 – Rckt 2012-03-06 21:32:18

+1

@Rckt:你在全局範圍聲明'edge * a'(它有靜態存儲持續時間)並且只能用常量初始化,例如'1'或''hello''等等。(這是另一個C quirk )。 – 2012-03-06 21:33:51

+0

你正在使用哪種編譯器? – rrr105 2012-03-06 21:35:14

0

我會採取瞎猜,並假設你根本不需要動態內存分配。在這種情況下,C版本是:

struct edge 
{ 
    char key; 
    char values[5]; 
}; 

struct edge a[9]; 

記住,在C++中,你不需要new創建對象,只有當您想動態創建對象需要new

如果我的猜測是正確的,上述將完全適合你。如果我的猜測不正確,那麼你的程序中會出現如下錯誤:

a = foo;