编译报的怪错误,大家帮忙看一下,3q

shuirh 2009-01-31 08:43:55
#include<stdio.h>
#define NEWSIZE 1000
#define NULL 0
char *new(int n);
free(char *freep);

main()
{
int number;
char *p;
printf("申请多少连续内存空间?\n");
scanf("%d",&number);
p=new(number);
free(p);
}

char *new(int n)
{
char buffer[NEWSIZE],*newp=buffer;

if(newp+n<buffer+NEWSIZE)
{
newp=newp+n;
printf("successful\n");
return(newp-n);
}
else
printf("failed\n");
return(NULL);
}

free(char *freep)
{
char buffer[NEWSIZE],*p=buffer;
if(freep>p && freep<buffer+NEWSIZE)
{
p=freep;
printf("free successful\n");
}
else
printf("free failed\n");
}


--------------------Configuration: text - Win32 Debug--------------------
Compiling...
Error spawning cl.exe

text.obj - 1 error(s), 0 warning(s)

没有用系统自带的malloc和free,我自己编写了2个功能类似的函数,但是编译的时候报错,我看不懂,大家帮忙看哈,谢谢了.
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyisnail 2009-01-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 waizqfor 的回复:]
引用 2 楼 shuirh 的回复:
我感觉是我的vc出问题了,我的所有程序都报这么一个错误,以前做的好程序也这么报错了.

VC的毛病 改下路径
实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”…
[/Quote]

这个是网上搜到的解决办法,实在不行就重装vc吧
arong1234 2009-01-31
  • 打赏
  • 举报
回复
不能只看代码不看错误信息,他的错误是调用cl失败,连编译都还没开始呢,你就开始找语法错误干吗?
[Quote=引用 1 楼 sagegz 的回复:]
帮你改了下,VS2005编译通过了.我把LZ的new函数改为了_new函数,因为跟关键字new冲突了.还有就是函数返回值也把void添上了.

C/C++ code
#include <stdio.h>
#define NEWSIZE 1000
#define NULL 0
char *_new(int n); //用关键字new做函数名?
void free(char *freep);

void main()
{
int number;
char *p;
printf("申请多少连续内存空间?\n");
scanf("%d",&number);
p=_new(nu…
[/Quote]
waizqfor 2009-01-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shuirh 的回复:]
我感觉是我的vc出问题了,我的所有程序都报这么一个错误,以前做的好程序也这么报错了.
[/Quote]
VC的毛病 改下路径
实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
shuirh 2009-01-31
  • 打赏
  • 举报
回复
我感觉是我的vc出问题了,我的所有程序都报这么一个错误,以前做的好程序也这么报错了.
sagegz 2009-01-31
  • 打赏
  • 举报
回复
帮你改了下,VS2005编译通过了.我把LZ的new函数改为了_new函数,因为跟关键字new冲突了.还有就是函数返回值也把void添上了.

#include <stdio.h>
#define NEWSIZE 1000
#define NULL 0
char *_new(int n); //用关键字new做函数名?
void free(char *freep);

void main()
{
int number;
char *p;
printf("申请多少连续内存空间?\n");
scanf("%d",&number);
p=_new(number);
free(p);
}

char *_new(int n)
{
char buffer[NEWSIZE],*newp=buffer;

if(newp+n <buffer+NEWSIZE)
{
newp=newp+n;
printf("successful\n");
return(newp-n);
}
else
printf("failed\n");
return(NULL);
}

void free(char *freep)
{
char buffer[NEWSIZE],*p=buffer;
if(freep>p && freep <buffer+NEWSIZE)
{
p=freep;
printf("free successful\n");
}
else
printf("free failed\n");
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧