Added2:改變static
後,它可以正確地GCC 4.8.4 慶典中工作(Ubuntu的4.8.4-2ubuntu1〜14 .04.3)在Windows上的Ubuntu的Ubuntu。 但是它不能在windows10中使用gcc 4.9.2(tdm-1)。我將編譯器更改爲具有gcc 4.9.2的cygwin,而不是tdm-1版本。奇怪,它的作品!所以我認爲編譯器也有一些錯誤!從類型 '無效*' 輸入 '詮釋*' 無效轉換
添加了1:我很抱歉,我發現我的編譯器是gcc不是g ++,我是新來的程序世界,請原諒我。我用.c
來構建,但它有一些內存泄漏問題,我無法處理。所以我換到.cpp
來建立,而這些錯誤出來了。所以這是我的情況。
windows 10 elipse gcc 4.8.4。我使用C語言。
elipse給我一個錯誤:從類型'void *'無效轉換爲類型'int *'[-fpermissive]。
elipse建議這些線路有錯誤
FullList = malloc(N * sizeof(int));
l = malloc(N * sizeof(int));
我不知道如何糾正它。 任何領導將不勝感激!
這是涉及這句話的功能。
#define ALLCHK(x) if (x == NULL) {printf ("allocation error\n"); assert(x);}
void Generate_Permutation(int N, int *p)
/* generate permutation of length N in p */
/* p is zero based, but the permutation is not */
{
int i,j; /* to loop */
int lspot; /* offset in l */
int *FullList; /* unpermuted */
int *l; /* left to be used */
FullList = malloc(N * sizeof(int));
ALLCHK(FullList)
for (i=0; i<N; i++) *(FullList+i) = i+1;
l = malloc(N * sizeof(int));
ALLCHK(l)
memcpy(l, FullList, sizeof(int)*N);
for (i=0; i < N; i++) {
lspot = (int)(URan(&seed) * (N - i));
*(p+i) = *(l+lspot);
for (j=lspot; j<N-i; j++) *(l+j) = *(l+j+1);
}
free(l); free(FullList);
}
錯誤不是來自Eclipse(這是一個編輯器),而是來自編譯器。順便說一句,你是用C還是用C++編寫的,它們是*不同的編程語言*;而C++ 11與C++ 98差別很大。 –
C和C++的規則不同。你在使用哪一個? –
作爲第一步,您需要決定使用哪種語言,C或C++。 –