C++报错illegal instruction

缺乏、安全感 2023-09-28 12:58 106阅读 0赞

  环境描述:ubuntu18.04 + cmake version 3.10.2 + g++ version 7.5.0
  场景描述:跑程序的时候遇到了一个错误:illegal instruction。使用cmake进行编译,编译是通过的,但是运行可执行文件的时候就会报错。用gdb去查发现停在了一个很普通的函数上(而且让我最纳闷的是我之前用g++编译,最后是可以运行的)

  最后上网找到了答案(有点儿蠢),是我在int类型的函数中没有写return。这个编译的时候并没有报错,但提示了一个warning。加上return或者把函数返回值类型修改为void,程序正常运行。

  warning具体是:

  1. warning: control reaches end of non-void function [-Wreturn-type]

  这个bug给我两个教训:
  1)以后一定要重视warning,编译通过了,程序还可能因为warning存在潜在的问题。
  2)有返回值的函数一定要写return

发表评论

表情:
评论列表 (有 0 条评论,106人围观)

还没有评论,来说两句吧...

相关阅读