<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Keil “RECURSIVE CALL TO SEGMENT“徹底解決

          Keil “RECURSIVE CALL TO SEGMENT“徹底解決

          作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
          我們?cè)谧霾藛纬绦蚧蛲ㄟ^(guò)函數(shù)指針調(diào)用函數(shù)時(shí),如果被調(diào)用的函數(shù)中有包含了常量字符串,那么經(jīng)常會(huì)出現(xiàn)這樣的的錯(cuò)誤提示:"RECURSIVECALLTOSEGMENT"意思是"遞歸調(diào)用段",如何解決呢,之前我沒(méi)有找到很好的方法,這段時(shí)間我回過(guò)頭來(lái)看keil的datasheet,找到了解決方法,當(dāng)然keil手冊(cè)提供的解決方法是編寫一個(gè).lin文件,我覺(jué)得麻煩,現(xiàn)提供我的解決方法,實(shí)例還是用keil提供的那個(gè)實(shí)例:
          #pragma code symbols debug oe void func1(unsigned char *msg ) { ; } void func2( void ) { unsigned char uc; func1("xxxxxxxxxxxxxxx"); } code void (*func_array[])() = { func2 }; void main( void ) { (*func_array[0])(); } 這樣會(huì)提示:
          *** WARNING 13: RECURSIVE CALL TO SEGMENT SEGMENT: ?CO?EXAMPLE1 CALLER: ?PR?FUNC2?EXAMPLE1 我的解決方法是:
          把code void (*func_array[])() = { func2 };放在另外一個(gè)段,
          即另外一個(gè).c文件中也就不存在同一個(gè)段遞歸調(diào)用情況,如下:
          keilrecur.c文件
          #i nclude 
          void func2( void );
          extern code void (*func_array[])();
          void func1(unsigned char *msg ) { msg=msg; }
          void func2( void ) { unsigned char uc; uc=uc; func1("xxxxxxxxxxxxxxx");}
           
          void main( void ) { (*func_array[0])();}
           
          funcptr.c文件
          #i nclude 
          void func2( void );code void (*func_array[])() = { func2 };
          這樣就可以解決段遞歸問(wèn)題.
          我們?cè)谧鯨CD菜單時(shí),喜歡做一個(gè)KeyTab,這樣也會(huì)出現(xiàn)"遞歸調(diào)用段"情況,
          那么我們可以把KeyTab單獨(dú)作為.c文件,方便管理又可以避免這種錯(cuò)誤提示.


          關(guān)鍵詞: KeilRECURSIVECALLTOSEGMEN

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();