我想知道如何在不使用任何头文件<stdlib.h>
的情况下释放指针。
我使用的平台(VX RTOS)我无法使用<stdlib.h>
,因此收到错误消息implicit declaration of function 'free' [-Werror=implicit-function-declaration]
。
我的代码中有几个包含指针的函数。而我在寒冷中几次打电话给他们。所以我相信我应该释放指针。我想知道如何释放它们。我已经在我的代码中放了一个函数。
int complex1(double a1,double b1,double c1,double d1,int op,double *e1, double *f1){
double c2d2;
//a=real(complex no1);b=imag(complex no1);c=real(complex no2);d=imag(complex no2);c2d2=sqrt(c1*c1+d1*d1)
/*op=type of operation
op=1: addition
op=2: substraction
op=3: multiplication
op=4: division
op=5: absolute value
*/
//Resultant compex number is in the form of e1+1j*f1
//Comlex number addition
if (op==1){
*e1=a1+c1;
*f1=b1+d1;
}
//Comlex number substraction
if (op==2){
*e1=a1-c1;
*f1=b1-d1;
}
//Comlex number multiplication
if (op==3){
*e1=a1*c1-b1*d1;
*f1=b1*c1+a1*d1;
}
//Comlex number division
if (op==4){
c2d2=c1*c1+d1*d1;
*e1=0;*f1=0;
if (c2d2 != 0){
*e1=(a1*c1+b1*d1)/(c2d2);
*f1=(b1*c1-a1*d1)/(c2d2);
}
}
//free(*e1);free(*f1);
return 0;
}
答案 0 :(得分:1)
如果您不能包含头文件,但是您要链接到C标准库实现,那么您只需声明原型并且警告就会消失。
在文件顶部声明函数free(3)
void free(void *ptr);
答案 1 :(得分:1)
如果由于某些可疑原因你不能包含<stdlib.h>
,你可以在使用它之前声明函数free
:
void free(void *);
如果您的系统在其C库中没有名为free
的符号,则会出现链接时错误。如果确实如此,那么人们只能希望它是标准free()
函数的符合实现。
答案 2 :(得分:1)
我想知道如何在不使用
<stdlib.h>
之类的任何头文件的情况下释放指针。
虽然你可能能够宣布
void free(void* ptr);
我强烈建议不要使用该路由,尤其是在使用Visual Studio时。
使用#include <stdlib.h>
除非您有充分理由不这样做。