This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器:用于模板和宏大量代码库的编译器分段错误(&A)

Guru**** 2618455 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/654551/compiler-compiler-segfaults-for-template-macro-heavy-codebase

工具/软件:TI C/C++编译器

我已经尝试为MSP432编译当前的内部固件,它使用gcc和clang与TI的armcl编译器构建良好。 遗憾的是,编译器在编译“main”文件时出现了错误,该文件需要实例化大量模板,同时还需要评估大量宏。

编译器通过以下方式调用:

TI/TI-CGT-arm_MSP.0.sts/bin/armcl 17.9 -mv7m4 --code_state=16 --float_support=FPv4SPD16 -me --advice:POWER=all -g --gcc --define=target_is_MSP432P4XX --define=display_error_number -imper/imper-imper_imper_imper_iiiii=imp_imper_iiiiii_iiiiii_imp_imp_ii=800 17.9 -imp_imper_imp_imp_iiiiii_imp_imp_iiiiiiii_imp_imp_j-imp_ii=imp-imp_iiiiiiii_-imper-imper-imp_iiiiiii_iiiiiii_i_ main.cpp 

其中,各种包含用于driverlib & CMSIS标头,而“devices/FT800_display/main.cpp”是C++主文件。 很遗憾,我无法公开共享编译器在使用--preproc_with注释调用时生成的.pp文件,因为它包含我们的内部源代码。

我怀疑循环宏所产生的长线可能是问题(我有几行超过1000个字符,其中一行甚至有17k)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan Cermak 说:
    很遗憾,我无法公开共享.pp文件[/QUOT]

    我理解。  但如果没有测试案例,我们就无法推进这一问题。  您是否愿意与我私下分享?  如果是, 请将鼠标悬停在我的屏幕名称或头像上。 此时将弹出一个框。 单击发送私人消息。 在出现的消息撰写界面中,使用回形针图标附加预处理文件。 因此文件将被接受,请将文件扩展名.txt添加到其中。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提交测试案例。  我可以重现该问题。  我在 SDOWP系统中提交了CodeGen-4280以对此进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    我发现,通过删除ULP Advisor选项--advication:power =all,它就会生成干净。  这是一种可能的解决方法。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上,删除--advication:power = all会使问题消失。 不过,我在SDOWP系统中找不到这个问题,是否已经解决了?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan Cermak 说:
    我在SDOWP系统中找不到问题,是否已修复?[/QUOT]

    否,尚未修复。  当我提交该条目时,我忽略了公开它。  我刚才改变了。  该更改将在几小时内传播到系统中。  抱歉!

    -George