编写了一个规约转换的小程序,重定义了几个局部变量,如GSP_HistorySelectCmd_Bay_Resp(头文件中定义的一个数据结构) Bay,用Bay来替代全局变量g_gsp_protocol_resp.history_select_cmd_bay_resp在函数某一部分中使用,编译时频繁报错,error显示的是stack overflow。
采用#if 0...#endif 定位了这一段的出错位置为定义的这一句(GSP_HistorySelectCmd_Bay_Resp Bay),尝试换了几个其他的数据来充当temp中间量的角色,发现变量大小与报错有关:定义的局部变量大小过大时会出错,若很小则不会。通过在工程属性中参照下面界面对堆栈保留大小值进行修改,修改保留大小为一个很大的值,错误消除,程序编译运行成功。