我对malloc不太了解,我知道有类似的问题,但我仍然想问。
当我编译代码时,我遇到了这些错误
scheduler.c: In function 'char* addprocess(char*, FILE*)':
scheduler.c:127:60: error: invalid conversion from 'void*' to 'process*'
scheduler.c:135:38: error: invalid conversion from 'void*' to 'char*'
scheduler.c:170:65: error: invalid conversion from 'void*' to 'event*'
scheduler.c: In function 'int main()':
scheduler.c:381:52: error: invalid conversion from 'void*' to 'stat*'
*** Error code 1
make: Fatal error: Command failed for target `all'
以下是代码中的行。
127 struct process* newproc = malloc(sizeof(struct process));
135 newproc->name = malloc(line-pos-1);
170 struct event* newevent = malloc(sizeof(struct event));
381 statistics = malloc(amount* sizeof(struct stat));
当它说无效转换及其原因时意味着什么。这些错误的最佳解决方案是什么。
答案 0 :(得分:5)
问题是您正在使用C ++编译器来编译C代码。
在C中,void *
可以在没有强制转换的情况下自由转换为任何其他非函数指针。在C ++中,需要进行强制转换,这就是为什么您在转换为void *
或从gcc scheduler.c -o out
转换时遇到错误。
使用C编译器编译C代码:
StyleSpan