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.

[参考译文] CCS/MSP430FR5969:在运行期间尝试创建数组时,什么原因导致代码退出main?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/631925/ccs-msp430fr5969-what-is-causing-the-code-to-exit-main-when-trying-to-create-an-array-during-run-time

部件号:MSP430FR5969

工具/软件:Code Composer Studio

您好,

我今天在CCS上写了以下代码:

#include <MSP40.0>

void Call_this_func(int len)
{
int array[len];
array[0]={0};//代码突然退出此函数,并在alloc.cpp文件后的exit.c文件
中进入无限循环}

void main()
{
Call_this_func(10);
while (1);
} 

代码突然退出该函数,并且main直接跳转到exit.c文件(在进入alloc.cpp文件后)。

我知道这可能是由于分配问题,但不能理解,如果传递的值是合法的,为什么会出现运行时错误?

有人能解释为什么会发生这种情况吗?

另外,我想获得一些专家的意见:这是一种可以接受的阵列创建方法吗? 如果不是,那么什么可能是更好的方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是非常有效的语法;我假定您写的是“array[0]=0;”而不带花括号。

    你得到的是一个可变长度的数组。 输入功能时,此功能需要特殊的运行时处理。 TI编译器通过使用堆中的动态分配来实现此功能。 确保定义了一个大堆,可能只有100个字节用于测试。 如果这不能解决问题,我们需要查看完整的测试案例。 请向我们展示完整的命令行选项,可编译的测试用例以及完整的链接器命令文件。 压缩整个项目并发布该项目可能会更简单。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,@考古学家,很抱歉这么晚才回复。 如果这是语法错误,那么在编译期间不应该检测到它吗? 语法错误应在运行时发生。 不是吗?
    此外,请详细说明说"命令行选项"时您需要什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果这是语法错误,那么在编译期间是否应该检测到它? [/引述]

    是的。   

    C:\work\dir>type file.c
    void Call_this_Func(int len)
    {
    int array[len];
    array[0]={0};
    }
    
    
    C:\work\dir>cl430 file.c
    "file.c",第4行:错误:预期表达式
    "file.c",第3行:警告:变量"array"已设置,但从未在
    编译1个"file detected"中使用。
    
    >>编译失败 

    要调查此案例,我们需要可以运行的功能。  请按照项目 共享一文中的说明压缩您的项目,然后将该zip文件附加到下一篇文章中。

    谢谢,此致,

    -George

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

    Dorman Gareth 说:
    另外,请详细说明说"命令行选项"时需要什么?[/QUOT]

    在Code Composer Studio下,编译器作为一个独立的程序实现。  CCS将此程序调用为命令行实用程序,其中包含要编译的文件名和优化级别等参数。  这在构建控制台窗口中最容易看到。  只需生成一次项目,然后在生成控制台窗口中查找以“cl430”开头的行。  如果您按照George的建议共享该项目,我们将能够从该项目中找出编译器命令行选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于已经有一段时间了,我想你已经解决了你的问题。 如果您能解决这个问题,我将不胜感激。

    谢谢,此致,

    -George