【发布时间】:2016-11-03 12:34:17
【问题描述】:
新增2:改成static后,可以在bash on ubuntu on windows。 但是它不能在使用 gcc 4.9.2(tdm-1) 的 windows10 中工作。我将编译器更改为具有 gcc 4.9.2 的 cygwin,而不是 tdm-1 版本。奇怪,它有效!所以我认为编译器也有一些错误!
已添加1:非常抱歉我发现我的编译器是 gcc 而不是 g++,我是程序世界的新手,请见谅。我使用.c 构建,但它有一些我无法处理的内存泄漏错误。所以我改用.cpp来构建,这些错误就出来了。这就是我的情况。
Windows 10 椭圆 gcc 4.8.4。我使用 C 语言。
elipse 给我一个错误:从类型“void*”到类型“int*”的无效转换 [-fpermissive]。
椭圆提示这些行有错误
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++。
-
ALLCHK的定义是什么? -
@Yu-FengQin 如果你想使用 C 库,你应该包含
。
标签: c