工具/软件:TI C/C++编译器
你(们)好
我需要禁用 VLA 分配、因为我们的堆大小不足以分配 VLA 块。
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.
工具/软件:TI C/C++编译器
你(们)好
我需要禁用 VLA 分配、因为我们的堆大小不足以分配 VLA 块。
没有方法仅禁用 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条目以请求此更改。 欢迎您使用我签名中的以下链接进行访问。
谢谢、此致、
乔治