欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Devc++编程过程中的一些报错总结

程序员文章站 2022-07-07 08:25:51
以下都是我在使用Devc++的过程中出现过的错误,通过查找资料解决问题,今天小小地记录、整理一下。 1.[Error] invalid conversion from 'const char*' to 'char' [-fpermissive] 出现该错误的原因是:使用字符串操作函数 strcmp, ......

  以下都是我在使用devc++的过程中出现过的错误,通过查找资料解决问题,今天小小地记录、整理一下。

1.[error] invalid conversion from 'const char*' to 'char' [-fpermissive]

  出现该错误的原因是:使用字符串操作函数 strcmp,strcpy时传入的必须是指针

  例如  :strcmp(a[i],"f"),这是错的,因为a[i]是值,不是指针,应该改为strcmp(&a[i],"f")

2.[error] 'malloc' was not declared in this scope

  出现该错误的原因是:使用malloc()函数时需要添加头文件#include<stdlib.h>,可能free()函数也是,因为也报了类似的错误

3.program received signal sigsegv,segmentation fault.报错

  该错误出现在我调试的过程中,错误出现的原因指针未初始化或越界,访问到未分配地址空间。

  不过,虽然知道了错误出现的原因,这个问题曾经还是困扰了我很久,下面,我分享一下我与该错误的斗争经过,以下代码是修改正确后的

 1 typedef struct             //数组存储型顺序栈,存储数据int型 
 2 {
 3     int data[maxsize];
 4     int top;
 5 }intstack;

 6 void initstack(intstack **s)    //数据为int型的栈的初始化 
 7 {
 8     *s=(intstack *)malloc(sizeof(intstack));
 9     (*s)->top=-1;
10 }
  本来照着课本上使用c++的&引用符可以写成void initstack(intstack *&s),然而,我保存文件时保存成.c文件了,于是c++的引用符就用不了了,一旦使用就会出现编译错误。于是,第一次,我去掉了&符号,改成使用指针,改成了void initstack(intstack *s),发现编译过了,但是运行起来是错误的,没有结果输出,返回值也是错误的(如果运行成功应该返回0,然而它却返回一大串随机数字)

  然后,我就开始调试,在进行到第六行时得到这个错误。下面是我自己的理解:

  首先,我在main函数中定义了一个  intstack *s=null  ,并将其初始化为null,如果我是用void initstack(intstack *s)函数,调用时就要写initstack(s),那么实际上我是将s中的值传到了函数中,而s中的值是null,将null传入到函数中,这不是我想要的。

  实际上,initstack函数的调用结果,我想要的是,申请一块可以存储intstack型结构体的空间,并将这块空间的地址保留到s中,以便通过s进行进一步的访问,所以,malloc函数得到的地址其实应该作为s的值,赋给s,于是,我们需要传入的就是s的地址,也就是二级指针,具体函数如上,调用时就写成initstack(&s),然后。。妥了,其实也确实是指针越界导致的错误啦,毕竟你啥也没传进去嘛,还想调用,想太多了。。。。

4.[error]ld returned 1 exit status

  出现错误的原因可能有:

    1.是你的程序已经在运行,关闭原来的程序就可以正常了

    2.你机器上有杀毒(安全)软件阻止了你程序的生成,退出杀毒(安全)软件再试下。

    3、检查声明函数名与定义的是否一致,最好复制过来。

5.[error]expected declaration or statement at end of input

  可能错误:

    1.某一个函数或者变量没有在使用之前声明。

    2.某个地方少了个括号。即括号不匹配。调试过程中不一定是光标提示处括号不匹配,可能是附近模块。

6.文件包含错误

  这个主要是理清文。件间的包含关系,避免重复包含。我现在一般是用devc++建工程,就三个文件,一个头文件,三个.c文件,其中一个是main文件,两个是放函数的文件,然后在.c文件中都包含.h文件就可以了。

7.bool类型在c语言中的使用

  如果想要在devc++上写c语言,又想用bool类型(c语言貌似是没有bool类型的哦),那么可以通过添加头文件  #include<stdbool.h>  ,这样就可以使用bool了。

                              初入道不久的小白,如有纰漏,望请指正。