当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个gcc下c的错误
帖子发表于 : 2008-12-09 14:56 

注册: 2008-04-09 23:46
帖子: 24
送出感谢: 0 次
接收感谢: 0 次
这个是源码
代码:
#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<alloca.h>

extern void afunc(void)
extern etext,edata,end;

int bss_var;     //未初始化全局变量
int data_var=42;  //初始化全局变量存储在数据区
#define SHW_ADR(ID,I) printf("the %8s\t is at adr:%8x\n",ID,&I);//打印地址区

int main(int argc,char *argv[])
{
   char *p,*b,*nb;
   printf("Adr etext:%8x\t Adr edata %8x\t Adr end %8x\t\n",&etext,&edata,&end);
   printf("\ntext Location:\n");
   SHW_ADR("main",main);
   SHW_ADR("afunc",afunc);
   printf("\nbss Location:\n");
   SHW_ADR("bss_var",bss_var);
   printf("\ndata Location:\n");
   afunc();
   p=(char* )alloca(32);
   if(p!=NULL)
   {
      SHW_ADR("start",p);
      SHW_ADR("end",p+31);
   }
   b=(char *)malloc(32*sizeof(char));
   nb=(char *)malloc(16*sizeof(char));
   printf("\nHeap Locations:\n");
   printf("the Heap start:%p\n",b);
   printf("the Heap end:%p\n",(nb+16*sizeof(char)));
   printf("\nb and nb in stack\n");
   SHWADR("b",b);
   SHWADR("nb",nb);
   free(b);
   free(nb);
}

void afunc(void)
{
   static long int level=0;    //静态数据存储在数据段
   int   stack_var;
   if(++level==5)
   {
      return;
   }
   printf("stack_var is at:%P\n",&stack_var);
   afunc();
}


这个是错误信息;
mem_add.c: 在函数‘afunc’中:
mem_add.c:7: 错误: 为形参‘etext’指定了存储类
mem_add.c:7: 错误: 为形参‘edata’指定了存储类
mem_add.c:7: 错误: 为形参‘end’指定了存储类
mem_add.c:10: 错误: 形参‘data_var’已初始化
mem_add.c:14: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:43: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:52: 错误: 原型函数定义中使用了旧式参数声明
mem_add.c:52: 错误: expected ‘{’ at end of input
望高手帮帮解决下,谢谢!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一个gcc下c的错误
帖子发表于 : 2008-12-09 15:32 
头像

注册: 2007-06-30 0:27
帖子: 509
送出感谢: 0 次
接收感谢: 1
引用:
#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<alloca.h>

extern void afunc(void);
extern etext,edata,end;

int bss_var; //未初始化全局变量
int data_var=42; //初始化全局变量存储在数据区
#define SHW_ADR(ID,I) printf("the %8s\t is at adr:%8x\n",ID,&I);//打印地址区

int main(int argc,char *argv[])
{
char *p,*b,*nb;
printf("Adr etext:%8x\t Adr edata %8x\t Adr end %8x\t\n",&etext,&edata,&end);
printf("\ntext Location:\n");
SHW_ADR("main",main);
SHW_ADR("afunc",afunc);
printf("\nbss Location:\n");
SHW_ADR("bss_var",bss_var);
printf("\ndata Location:\n");
afunc();
p=(char* )alloca(32);
if(p!=NULL)
{
SHW_ADR("start",p);
SHW_ADR("end",p+31);
}
b=(char *)malloc(32*sizeof(char));
nb=(char *)malloc(16*sizeof(char));
printf("\nHeap Locations:\n");
printf("the Heap start:%p\n",b);
printf("the Heap end:%p\n",(nb+16*sizeof(char)));
printf("\nb and nb in stack\n");
SHW_ADR("b",b);
SHW_ADR("nb",nb);

free(b);
free(nb);
}

void afunc(void)
{
static long int level=0; //静态数据存储在数据段
int stack_var;
if(++level==5)
{
return;
}
printf("stack_var is at:%P\n",&stack_var);
afunc();
}

初学写程序一定要十分的细心。


_________________
反对台独,反对藏独,反对孤独!
apt-get不是万能的:

代码:
sudo apt-get install girlfriend
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
有一些软件包无法被安装。
下列的信息可能会对解决问题有所帮助:
下列的软件包有不能满足的依赖关系:
girlfiend: 依赖: hourse但是它将不会被安装
girlfiend: 依赖: car但是它将不会被安装
house,car: 依赖: money但是它将不会被安装
E: 无法安装的软件包


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一个gcc下c的错误
帖子发表于 : 2008-12-10 18:16 
头像

注册: 2007-10-15 9:08
帖子: 33
地址: Xiamen, China
送出感谢: 0 次
接收感谢: 0 次
这个是错误信息;
mem_add.c: 在函数‘afunc’中:
mem_add.c:7: 错误: 为形参‘etext’指定了存储类
mem_add.c:7: 错误: 为形参‘edata’指定了存储类
mem_add.c:7: 错误: 为形参‘end’指定了存储类
mem_add.c:10: 错误: 形参‘data_var’已初始化
mem_add.c:14: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:43: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:52: 错误: 原型函数定义中使用了旧式参数声明
mem_add.c:52: 错误: expected ‘{’ at end of input



编译提示里面已经很详细了.
一般遇到编译提示错误,先看最前边的,有可能你解决了第一个,后边很多错误都消失了.
实际上程序并没有那么多的错误,只是因为前边的某个错误而导致编译器不能够正常的
分析后边的程序才会报出那么多的错误...

你的程序提示的最前边的错误在第7行,所以应该先去这里看看,
稍微细心点就可以发现第6行少了个分号...解决之后再重新编译,再看再解决,其实很容易的...


_________________
有些故事还没讲完, 那就算了吧;有些心情在岁月中, 已经难辨真假。
bitbybit.72pines.com


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一个gcc下c的错误
帖子发表于 : 2008-12-27 0:11 

注册: 2008-04-09 23:46
帖子: 24
送出感谢: 0 次
接收感谢: 0 次
iceway 写道:
这个是错误信息;
mem_add.c: 在函数‘afunc’中:
mem_add.c:7: 错误: 为形参‘etext’指定了存储类
mem_add.c:7: 错误: 为形参‘edata’指定了存储类
mem_add.c:7: 错误: 为形参‘end’指定了存储类
mem_add.c:10: 错误: 形参‘data_var’已初始化
mem_add.c:14: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:43: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:52: 错误: 原型函数定义中使用了旧式参数声明
mem_add.c:52: 错误: expected ‘{’ at end of input



编译提示里面已经很详细了.
一般遇到编译提示错误,先看最前边的,有可能你解决了第一个,后边很多错误都消失了.
实际上程序并没有那么多的错误,只是因为前边的某个错误而导致编译器不能够正常的
分析后边的程序才会报出那么多的错误...

你的程序提示的最前边的错误在第7行,所以应该先去这里看看,
稍微细心点就可以发现第6行少了个分号...解决之后再重新编译,再看再解决,其实很容易的...

真的很感谢你!我会更加细心的写程序的。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一个gcc下c的错误
帖子发表于 : 2008-12-27 0:16 

注册: 2008-04-09 23:46
帖子: 24
送出感谢: 0 次
接收感谢: 0 次
牙签儿 写道:
引用:
#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<alloca.h>

extern void afunc(void);
extern etext,edata,end;

int bss_var; //未初始化全局变量
int data_var=42; //初始化全局变量存储在数据区
#define SHW_ADR(ID,I) printf("the %8s\t is at adr:%8x\n",ID,&I);//打印地址区

int main(int argc,char *argv[])
{
char *p,*b,*nb;
printf("Adr etext:%8x\t Adr edata %8x\t Adr end %8x\t\n",&etext,&edata,&end);
printf("\ntext Location:\n");
SHW_ADR("main",main);
SHW_ADR("afunc",afunc);
printf("\nbss Location:\n");
SHW_ADR("bss_var",bss_var);
printf("\ndata Location:\n");
afunc();
p=(char* )alloca(32);
if(p!=NULL)
{
SHW_ADR("start",p);
SHW_ADR("end",p+31);
}
b=(char *)malloc(32*sizeof(char));
nb=(char *)malloc(16*sizeof(char));
printf("\nHeap Locations:\n");
printf("the Heap start:%p\n",b);
printf("the Heap end:%p\n",(nb+16*sizeof(char)));
printf("\nb and nb in stack\n");
SHW_ADR("b",b);
SHW_ADR("nb",nb);

free(b);
free(nb);
}

void afunc(void)
{
static long int level=0; //静态数据存储在数据段
int stack_var;
if(++level==5)
{
return;
}
printf("stack_var is at:%P\n",&stack_var);
afunc();
}

初学写程序一定要十分的细心。

谢谢,~~~~~~~~~~~~~~~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译