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/MSP432P401R:"main ()&quot 没有可用的源;在 main.cpp 中使用 lambda 函数时出错

Guru**** 2522770 points
Other Parts Discussed in Thread: SEGGER

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/853265/ccs-msp432p401r-no-source-available-for-main-error-when-using-lambda-functions-in-main-cpp

器件型号:MSP432P401R
主题中讨论的其他器件:SEGGER

工具/软件:Code Composer Studio

IDE 中的调试器(CCS 9.2.0.00013)  抛出错误 “No source available for main()……” 在 main.cpp 文件中使用 lambda 函数时(但如果在项目中的其他文件/类中使用 lambda 函数、则效果良好)。 已在 MAC 和 Windows 版本上进行测试。 使用连接到 SEGGER J-link 调试器的 SimpleLink 红色开发板复制了该问题(不确定这对错误是否真正重要)。

要重现此问题、请为 MSP432P401R 创建新的 CCS 工程、并将其他选项保留为默认值。

将 main.c 文件重命名为 main.cpp 并粘贴以下代码:

#include "msp.h"

volatile unsigned int n;
void (*functionPtr )( int );

void myfunction (void (*function)( int ))
{
functionPtr = function;
}

void callback (int k)
{
k++;
}

/**
* main.c
*/
void main (void)
{
WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;//停止看门狗计时器

myfunction ([](int j){j++;}); //没有源代码可用于 main()
//myfunction (回调); //调试工作正常
while (1);
}

代码编译和链接时没有错误。 当按下 Debug 按钮时、代码被正确载入 MSP、但是不能进行调试(步进/步进)、但是只能恢复或停止执行。 弹出一个错误窗口、并显示上述消息。 如果使用 lambda 函数的行被注释掉、而使用下一个行(使用回调函数的指针)、则调试将标称工作。

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

    您好!

    感谢您的测试案例。 我也可以重现此问题。 我为此提出了一个错误。 跟踪 ID: CCDSK-3754

    谢谢你

    Ki