gpt4 book ai didi

c++ - g++ 编译单独预处理的文件会根据体系结构给出错误

转载 作者:行者123 更新时间:2023-11-30 04:27:47 24 4
gpt4 key购买 nike

我在 x64_86 GNU Linux 架构上使用 g++ 4.1.2 版。代码库非常庞大,我对项目中使用的 makefile 没有足够的了解。代码编译正常。

出于某些调试目的,我需要单独预处理 (g++ -E) 几个源文件,然后重新编译它。我正在使用 -I 提供所需的包含路径.理想情况下,编译应该没问题。

但我在标准 header 中发现的差异很少,例如:

  1. typedef unsigned long size_t;导致错误 operator new()编译器生成的声明(如果我更改为 unsigned int手动然后此错误消失)
  2. 在像unsigned long numeric_limits<>::max() 这样的库函数中,编译器提示大数字,例如 922...807L ;它产生编译器错误 integer constant is too large for long type
  3. __errorno_location() 的不匹配声明给出编译器错误

我很难找到问题所在。为什么当我对未更改的文件进行 make 时编译会正常进行,为什么当我给出 g++ -I <> -E 时标准 header 开始乱码单个文件的选项?

如果有任何解决此错误的想法,我们将不胜感激。

最佳答案

不要单独预处理和编译,或者如果您必须使用一致的编译器选项和一致的环境。

听起来好像您是在 32 位机器上运行预处理器(或使用 -m32 选项)然后在 64 位机器上编译。

关于c++ - g++ 编译单独预处理的文件会根据体系结构给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640398/

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