gpt4 book ai didi

c - 是什么原因导致 "left but not entered"GCC 编译器错误?

转载 作者:行者123 更新时间:2023-12-01 17:59:56 25 4
gpt4 key购买 nike

我们最近遇到了以下编译器错误,该错误在整个构建过程中的不同位置重复出现:

line-map.c: file "<a source_file name>" left but not entered

源文件在构建的不同点上是不同的。一段时间后,编译器终于抛出了以下错误:

<header file>: In function `<function name that is not present within the given header file>':
<same header file>:-117020: internal compiler error: in final_scan_insn, at final.c:1790

经过大量调查,我们发现此错误是由不同头文件中的某些 #define 引起的:

#define GEOGRAPHIC_LOC_TYPE_CGI            0
#define GEOGRAPHIC_LOC_TYPE_SAI 1
#define GEOGRAPHIC_LOC_TYPE_RAI 2
#define GEOGRAPHIC_LOC_TYPE_TAI 128
#define GEOGRAPHIC_LOC_TYPE_ECGI 129
#define GEOGRAPHIC_LOC_TYPE_TAI_AND_ECGI 130

我们将这些 #define 从当前存在的头文件移至 .c 文件中,这是当前使用它们的唯一位置。然后,我们就不再看到编译器错误了。

谁能解释一下上述编译器错误的含义以及为什么此修复有效?

谢谢,瑞安

最佳答案

当你得到ICE(内部编译器错误)时,这意味着GCC的内部结构被搞乱了。不是因为您的代码,而是因为 GCC 代码内部存在错误,该错误是由断言检测到的。

为避免该错误而对代码进行的更改可能没有意义。

接下来的步骤是:

  • 更新到最新的GCC(4.4.2),检查ICE是否已修复。
  • 如果不是,请将代码减少为生成 ICE 的最少代码
  • 创建 Bug Report对于那个 ICE。

关于c - 是什么原因导致 "left but not entered"GCC 编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com