gpt4 book ai didi

c - 基于 Pro*C 的批处理,内存不足?

转载 作者:行者123 更新时间:2023-11-30 15:22:51 27 4
gpt4 key购买 nike

当尝试编译基于 Pro*C 的批处理文件时,进程“proc”卡在 1 个 CPU 核心的 100%,并且内存开始增长到系统需要 OOM 终止该进程的程度(机器有 16GB)内存和进程增长到 9GB)。

以前有人见过这种行为吗?

作为附加信息:

-mk是主包安装时的mk
- .pc文件是原始文件(我尝试编译了几个,例如dtesys.pc)
- 库已正确编译
-环境变量设置正确

最佳答案

是的,它是limits.h,因为它在第123行递归地包含自身:

 /* Get the compiler's limits.h, which defines almost all the ISO constants.
We put this #include_next outside the double inclusion check because
it should be possible to include this file more than once and still get
the definitions from gcc's header. */
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
/* `_GCC_LIMITS_H_' is what GCC's file defines. */
# include_next <limits.h>
#endif

因此,解决方案是将 parse=none 选项传递给 Pro*C 预编译器:

proc parse=none iname=filename.pc oname=filename.c

或者,第二种选择:您可以首先使用 c 预编译器预编译源代码以获取 pc 文件:

cpp -P -E yourfile.someextension -o yourfile.pc

然后你将得到不递归解析的limits.h。

需要-P选项,因为Pro*C是一个容易与线标记混淆的程序。

需要-E选项,因为Pro*C是一个容易与非传统输出混淆的程序。

关于c - 基于 Pro*C 的批处理,内存不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015505/

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