gpt4 book ai didi

c++ - 使用 g++ 和 specs 文件进行预处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:08 27 4
gpt4 key购买 nike

问题涉及 arm-none-eabi-g++ 6.2 和针对 newlib-nano 的链接。

当我使用 -specs=nano.specs 预处理C 源代码 时, 文件 newlib.h来自目录newlib-nano包括:

echo '#include <string.h>' |\
/opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc -specs=nano.specs -x c -E - |\
grep '^# 1 .*newlib\.h'

输出 # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib-nano/newlib.h" 1 3 4 (正如预期的那样)。这是因为文件 nano.specs包含(除其他外)行

%rename cpp     nano_cpp
 
*cpp:
-isystem =/include/newlib-nano %(nano_cpp)

但是如果我通过相同的编译器提供C++ 源

echo '#include <string.h>' |\
/opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc -specs=nano.specs -x c++ -E - |\
grep '^# 1 .*newlib\.h'

输出为 # 1 "/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib.h" 1 3 .

换句话说:specs 文件被忽略了。

我知道我应该包括 <cstring>而不是 <string.h>在 C++ 源代码中,GNU g++ 通常由 …/arm-none-eabi-c++ 调用而不是 …/arm-none-eabi-gcc -x c++但我这样做是为了找出的差异。并且:这并没有改变这件事。

问题:我必须向规范文件添加什么才能让 C++ 文件包含 newlib-nano/newlib.h

最佳答案

这是一个错误 ( https://bugs.launchpad.net/gcc-arm-embedded/+bug/1661882 )。它已被修复。它将在“6-2017-q1-update”中。

关于c++ - 使用 g++ 和 specs 文件进行预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535795/

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