使用 #pragma GCC Optimize 优化 C 代码

2023-12-08

我正在尝试使用 GCC pragma optimization 在我的 C 代码中设置全局优化。 Ubuntu 上的 GCC 版本是 4.4.3。基本思想是使用特定于功能的优化级别。

#pragma GCC optimize ("O3")

我收到编译错误 就在我的 C 代码中的 main 函数之前

但是当我构建它时,我收到如下编译错误 -

passrecovery.c: In function âmainâ:
passrecovery.c:493: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.4/README.Bugs> for instructions.
make: *** [all] Error 1

我检查了错误中提到的 README.Bugs 文件,但没有找到与此相关的线索。

Is #pragma optimize4.4.3 GCC 是否支持?

如果是,那么我在使用这个编译指示来优化代码时做错了什么。

还有其他替代 GCC 指令来优化代码速度吗?

EDIT: 我什至尝试过#pragma GCC push_options then #pragma GCC optimize ("O3")并在文件末尾#pragma GCC pop_options;同样的错误。


导致分段错误的 ICE(内部编译器错误)始终是编译器中的错误,这就是它要求您报告错误的原因。您不应该能够使用任何源代码(无论有效还是无效)使编译器崩溃。 (可能会发生各种各样的事情,最常见的是拒绝编译无效代码,但崩溃不是其中之一。)

既然 GCC 4.6.1 是最新版本,为什么不考虑升级到更新版本的 GCC(并不是说 4.4.3 已经那么旧了)。

在提交错误报告之前,您应该尽量减少复制。从第 494 行开始的所有内容可能都不重要;如果幸运的话,您可以将第 1 行和第 493 行之间的材料从近 500 减少到 20 左右。您当然应该致力于在保留错误的同时尽可能地减少它。在开始修改代码之前,请保留导致编译器崩溃的版本。当您成功删除代码并保留崩溃时,请将每个后续版本签入您的 VCS。 (你are使用 VCS,不是吗?这是一个反问句;如果您还没有,那么现在就是开始的好时机。您需要一个来避免进行无法撤消的更改。)在消除标准标头之前尝试消除非标准标头(您编写的标头)。尝试删除尽可能多的标头。请注意对预处理源的请求 - 我所说的代码减少会减少预处理源的大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 #pragma GCC Optimize 优化 C 代码 的相关文章

随机推荐