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.

[参考译文] Compiler/TMS570LC4357:用于禁用 VLA 分配的 Compiler 选项

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/883062/compiler-tms570lc4357-compiler-option-to-disable-vla-allocation

器件型号:TMS570LC4357

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

你(们)好

我需要禁用 VLA 分配、因为我们的堆大小不足以分配 VLA 块。

#define NORMAL BLOCK_SIZE       32700
TI CGT ARM 编译器是否有编译器选项来禁用对 VLA 分配的支持?
此致
Richa
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没有方法仅禁用 VLA。

    VLA 功能是 C11标准的一部分。  默认情况下、TI 编译器支持 C89标准以及其他标准作为扩展。  因此、您可以考虑使用-strict_ansi 选项、该选项禁用所有语言扩展。 如果 VLA 是您的代码使用的唯一语言扩展、则可以使用。  如果您的代码使用其他语言扩展、则可能不起作用。

    如果确实使用了--strict_ansi、请了解添加--C11会导致编译器支持 C11标准、其中包括 VLA。  因此、在选项-strict_ansi --C11的组合下、支持 VLA。

    谢谢、此致、

    乔治

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

    是否可以选择将 VLA 块大小重新配置为更小?

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

    遗憾的是、没有命令行选项。   

    正如您发现的,这个预处理器符号...

    #define NORMAL BLOCK_SIZE 32700
    

    (笑声) 在 RTS 源文件 Vla_alloc.c 中定义  您可以考虑更改它并重建 RTS 库。  但是、每次升级编译器时、都必须记住这一点。  我认为这是不切实际的。

    谢谢、此致、

    乔治

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

    是-我宁愿没有编译器的补丁。 我想我只需要手动从代码中删除 VLA 用途。

    是否可以为下一个编译器版本推送此请求(可配置的 VLA 块大小)?

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

    [引用 user="Richa Sahasrabudhe1"]是否可以为下一个编译器版本推送此请求(可配置的 VLA 块大小)?

    我在 编译器中提交了 EXT_EP-9729条目以请求此更改。  欢迎您使用我签名中的以下链接进行访问。

    谢谢、此致、

    乔治