当前位置:  技术问答>linux和unix

一个简单的GCC编译问题

    来源: 互联网  发布时间:2015-09-22

    本文导语:  #include #include #include struct nodeType { char *rarVal; struct nodeType *nextNode; }; // typedef struct nodeType NodeType; int main() {    nodeType *node;   // node = (nodeType *)malloc(sizeof(nodeType));  //  node->rarVal = (char *)malloc(20);  //  s...

#include
#include
#include

struct nodeType
{
char *rarVal;
struct nodeType *nextNode;
};

// typedef struct nodeType NodeType;

int main()
{
   nodeType *node;
  // node = (nodeType *)malloc(sizeof(nodeType));
 //  node->rarVal = (char *)malloc(20);
 //  strcpy(node->rarVal, "test");
//   node->nextNode = NULL;
//   ...
  // free(node->rarVal);
//   free(nodeType);
}
这段代码为什么GCC编译通不过啊,就这么几句,不晓得还有什么问题我把main里面的第一句去掉就没事,难道是结构问题?

|
确实是main第一句有问题:
应该把nodeType *node;该为NodeType *node;

因为你的typedef struct nodeType NodeType;这句代码把struct nodeType的数据结构类型
等价与NodeType;即struct nodeType=NodeType。


要不:
你把typedef struct nodeType NodeType;删了,
main第一句直接该为:struct nodeType  *node;

数据结构里关于typedef那部分说的挺明白的




|
#include
#include
#include

struct nodeType
{
char *rarVal;
struct nodeType *nextNode;
};
typedef struct nodeType NodeType;


int main()
{
  NodeType *node;
  node = (nodeType *)malloc(sizeof(nodeType));
  node->rarVal = (char *)malloc(20);
  strcpy(node->rarVal, "test");
  node->nextNode = NULL;

  free(node->rarVal);
  free(nodeType);
}

这样试试啦

我没有帮你去试了,上面的仁兄们也讲过了

|
#include
#include
#include

struct nodeType
{
char *rarVal;
struct nodeType *nextNode;
};


int main()
{
  struct nodeType *node;
  node = (struct nodeType *)malloc(sizeof(struct nodeType));
  node->rarVal = (char *)malloc(20);
  strcpy(node->rarVal, "test");

  free(node->rarVal);
  free(node);    // 应该是node,不是nodeType
}

|
node = (nodeType *)malloc(sizeof(nodeType));不是已经为结构申请空间了吗?为什么还要单独再为node->rarVal = (char *)malloc(20);申请空间?
 
你可以看一下sizeof(nodeType)的大小,rarVal在其中占据的是一个四个字节长的,就是说还是一个指针的长度,node = (nodeType *)malloc(sizeof(nodeType));你申请的空间中rarVal占的仍然是一个指针的长度,就是四个字节,你要给他单独申请一下,才能当作数组用(我说的不好,表达能力差了点,你对付这看吧)

|
nodeType *node;这句话有问题(改成NodeType *node;)
还有你的编译命令是不是对的?
(gcc 原文件.c -o 目标文件)

|
main 的第一句是struct nodeType  *node;吧

|
把main里面得 nodeType  *node;语句改为
struct nodeType  *node;吧!

    
 
 

您可能感兴趣的文章:

  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • GCC3.4可以编译2.4内核吗 如何查看某版本内核是用哪个版本gcc编译的
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 问:关于gcc编译器和g++编译器
  • 求一个编译好的的gcc编译器
  • 编译GCC时能不能只编译C/C++的编译器?
  • gcc编译时出错,gcc: installation problem, cannot exec `as': 没有那个文件或目录!!!求助呀呀!!!!!
  • 建立较差编译环境,编译gcc-3.4.4出错
  • gcc与arm-linux-gcc编译的问题???
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • Solaris8,安装了iconv,gcc和gcclib,然后用gcc编译c程序出错。
  • 使用eclipse 加入arm-elf-gcc 或arm-linux-gcc 编译器为什么不好使
  • 我在Solaris8上安装了gcc3.3Solaris8,但是总是出错!错误如下:gcc: syntax error at line 1: `(' unexpected iis7站长之家
  • linux x86_64下由于拷贝gcc的lib目录导致gcc编译器出错
  • GCC编译程序时,有自定义头文件,提示找不到该头文件,但他就在这个目录中,如何设置GCC参数?
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • ubuntu 10.10出现极其诡异的情况,使用gcc编译没任何反应,可以继续输入,但是不提示任何错误;使用make编译效果一样;
  • 求助:当用 gcc 编译时没,加上优化选项 -02 ,可是提示是 gcc: unrecognized option `-02'
  • GCC无法安装的问题,希望有人帮我( Debian 4.04ra无法安装GCC)
  • 疑惑softfloat的问题,并求arm-linux-gcc和arm-linux-softfloat-gcc4.1.1
  • 安装Oracel,关于ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc的问题
  • 卸载和安装GCC问题
  • gcc安装的问题
  • cc与gcc的问题
  • 关于gcc的问题!
  • gcc 问题
  • 内核版本问题 GCC版本问题
  • solaris下gcc问题
  • GCC 与 Samba 问题 ?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 命令:mips_fp_le-gcc,mipsel-gcc 是什么意思?跟一般的gcc有什么区别?
  • 怎样升级我的GCC呀,我用的RH7.2,GCC 2.96 ,我从网上下载了一个gcc-3.2.3.tar.gz
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • gcc-ccore、avr-gcc及arm-gcc的区别
  • gcc在哪里?bash:gcc:command not found
  • 如何删掉GCC3.0(我需要GCC2.0-----)
  • Windows版GCC TDM-GCC
  • 急问:如何卸掉gcc 3.2庄gcc 2.96
  • 有人遇到过吗,在安装GCC时提示,"checking gcc ...no "
  • 一套未安装gcc的Linux中安装gcc rpm包时时出现错误
  • 下了一个GCC3.0包用tar xjfv gcc-3.0.tar.bz2解压后出现一堆文
  • 请问如何安装rpm格式的gcc如gcc-3.2.2-5.src.rpm,谢谢
  • 在redhat9下,如何将gcc3.x改为gcc2.x?
  • 我在Solaris8上安装了gcc3.3Solaris8,但是总是出错!错误如下:gcc: syntax error at line 1: `(' unexpected
  • Linux RadHat7.2 系统,无gcc、cc。请问怎么安装gcc和cc?哪里可以下载cc?
  • 我在安装Red Hat Linux 时没有装到gcc,怎么才能在之后把gcc装上?
  • makefile中加入动态库编译,在gcc下正常,在arm gcc下说库找不到?
  • 使用gcc gdb的大牛进来说说gdb的强大之处在哪。我刚学linux了,vim我确实体会到了其强大之处。而对gcc gdb,体会不到gdb这工具的强大之处。
  • arm-linux-gcc 交叉编译poco-1.3.5-all 报错stlport_arm_linux_gcc库找不到
  • 编译相同代码,gcc和mipsel-linux-gnu-gcc生成的app不同,求高手帮忙解决


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3