请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 函数的行被注释掉、而使用下一个行(使用回调函数的指针)、则调试将标称工作。