<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> EDA開發應用 >> Keilc >> 正文

      keil C 編譯器錯誤與解決方法

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2008-12-3

               最近調好了基于EDN USB學習板的無線鍵盤程序,以前KEIL C沒有怎么好好的學習.調試中遇到很多的問題.下面我自己在網上搜到了一些關于keil C 編譯器錯誤與解決方法.做成PDF文檔,望大家少走一點彎路:

                                                         keil c編譯器錯誤與解決方法

      1. Warning 280:’i’:unreferenced local variable
      說明局部變量i 在函數中未作任何的存取操作解決方法消除函數中i 變量的宣告
      2 Warning 206:’Music3’:missing function-prototype
      說明Music3( )函數未作宣告或未作外部宣告所以無法給其他函數調用
      解決方法將敘述void Music3(void)寫在程序的最前端作宣告如果是其他文件的函數則要寫
      成extern void Music3(void),即作外部宣告
      3 Compling :C:\8051\MANN.C
      Error:318:can’t open file ‘beep.h’
      說明在編譯C:\8051\MANN.C 程序過程中由于main.c 用了指令#i nclude “beep.h”,但
      卻找不到所致解決方法編寫一個beep.h 的包含檔并存入到c:\8051 的工作目錄中
      4 Compling:C:\8051\LED.C
      Error 237:’LedOn’:function already has a body
      說明LedOn( )函數名稱重復定義即有兩個以上一樣的函數名稱
      解決方法修正其中的一個函數名稱使得函數名稱都是獨立的
      5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?_DELAYX1MS?DELAY
      說明DelayX1ms( )函數未被其它函數調用也會占用程序記憶體空間解決方法去掉
      DelayX1ms( )函數或利用條件編譯#if …..#endif,可保留該函數并不編譯
      6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
      FROM : 0025H
      TO: 0025H
      說明外部資料ROM 的0025H 重復定義地址
      解決方法外部資料ROM 的定義如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC
      變量的名稱為0x25,請檢查是否有其它的變量名稱也是定義在0x25 處并修正它
      7 WARNING 206:’DelayX1ms’: missing function-prototype
      C:\8051\INPUT.C
      Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C
      說明程序中有調用DelayX1ms 函數但該函數沒定義即未編寫程序內容或函數已定義但未作
      宣告
      解決方法編寫DelayX1ms 的內容編寫完后也要作宣告或作外部宣告可在delay.h 的包含檔
      宣告成外部以便其它函數調用
      8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
      SYMBOL:MUSIC3
      MODULE:C:\8051\MUSIC.OBJ(MUSIC)
      ***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
      SYMBOL:MUSIC3
      MODULE:C:\8051\MUSIC.OBJ(MUSIC)
      ADDRESS:0018H
      說明程序中有調用MUSIC 函數但未將該函數的含擴檔C 加入到工程檔Prj 作編譯和連接
      解決方法設MUSIC3 函數在MUSIC C 里將MUSIC C 添加到工程文件中去
      9 ***ERROR 107:ADDESS SPACE OVERFLOW
      SPACE: DATA
      SEGMENT: _DATA_GOUP_
      LENGTH: 0018H
      ***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
      SYMBOL: VOLUME
      MODULE: C:\8051\OSDM.OBJ (OSDM)
      ADDRESS: 4036H
      說明data 存儲空間的地址范圍為0~0x7f,當公用變量數目和函數里的局部變量如果存
      儲模式設為SMALL 則局部變量先使用工作寄存器R2~R7 作暫存當存儲器不夠用時則會
      以data 型別的空間作暫存的個數超過0x7f 時就會出現地址不夠的現象
      解決方法將以data 型別定義的公共變量修改為idata 型別的定義
      說明如對編譯出錯感興趣的網友能否把你們常遇到的錯誤信息收集起來并提出最終的
      解決辦法加以歸納以期共享
      10.***WARNING L15: MULTIPLE CALL TO SEGMENT
      SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1
      CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
      CALLER2: ?C_C51STARTUP
      ***WARNING L15: MULTIPLE CALL TO SEGMENT
      SEGMENT: ?PR?_SPI_SEND_WORD?D_SPI
      CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
      CALLER2: ?C_C51STARTUP
      ***WARNING L15: MULTIPLE CALL TO SEGMENT
      SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI
      CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
      CALLER2: ?C_C51STARTUP
      該警告表示連接器發現有一個函數可能會被主函數和一個中斷服務程序(或者調用中斷
      服務程序的函數)同時調用,
      或者同時被多個中斷服務程序調用。
      出現這種問題的原因之一是這個函數是不可重入性函數,當該函數運行時它可能會被一
      個中斷打斷,從而使得結果發生變化
      并可能會引起一些變量形式的沖突(即引起函數內一些數據的丟失,可重入性函數在任何時
      候都可以被ISR 打斷,一段時間后又可以
      運行,但是相應數據不會丟失)。
      原因之二是用于局部變量和變量(暫且這樣翻譯,arguments,[自變量,變元一數值,用于
      確定程序或子程序的值])的內存區被其他函數的內存區所覆蓋,如果該函數被中斷,則它的
      內存區就會
      被使用,這將導致其他函數的內存沖突。
      例如,第一個警告中函數WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定義,
      它被一個中斷服務程序或者一個調用了中斷
      服務程序的函數調用了,調用它的函數是VSYNC_INTERRUPT,在MAIN.C 中。
      解決方法:
      如果你確定兩個函數決不會在同一時間執行(該函數被主程序調用并且中斷被禁止),并
      且該函數不占用內存(假設只使用寄存器),
      則你可以完全忽略這種警告。
      如果該函數占用了內存,則應該使用連接器(linker)OVERLAY 指令將函數從覆蓋分析
      (overlay analysis)中除去,例如:
      OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)
      上面的指令防止了該函數使用的內存區被其他函數覆蓋。如果該函數中調用了其他函數,
      而這些被調用在程序中其他地方也被調用,
      你可能會需要也將這些函數排除在覆蓋分析(overlay analysis)之外。這種OVERLAY 指令能
      使編譯器除去上述警告信息。
      如果函數可以在其執行時被調用,則情況會變得更復雜一些。這時可以采用以下幾種方
      法:
      1.主程序調用該函數時禁止中斷,可以在該函數被調用時用#pragma disable 語句來實現禁
      止中斷的目的。必須使用OVERLAY 指令將該函數
      從覆蓋分析中除去。
      2.復制兩份該函數的代碼,一份到主程序中,另一份復制到中斷服務程序中。
      3.將該函數設為重入型。例如:
      void myfunc(void) reentrant {
      ...
      }
      這種設置將會產生一個可重入堆棧,該堆棧被被用于存儲函數值和局部變量,用這種
      方法時重入堆棧必須在STARTUP.A51 文件中配置。
      這種方法消耗更多的RAM 并會降低重入函數的執行速度。
      11. *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      SEGMENT: ?PR?_COMPARE?TESTLCD
      說明:程序中有些函數(或片段)以前(調試過程中)從未被調用過,或者根本沒有
      調用它的語句。
      這條警告信息前應該還有一條信息指示出是哪個函數導致了這一問題。只要做點簡
      單的調整就可以。不理它也沒什么大不了的。
      解決方法:去掉COMPARE()函數或利用條件編譯#if …..#endif,可保留該函數并不
      編譯。
      C 編譯器錯誤信息中文翻譯
      Ambiguous operators need
      parentheses
      不明確的運算需要用括號括起
      Ambiguous symbol ``xxx``
      不明確的符號
      Argument list syntax error
      參數表語法錯誤
      Array bounds missing
      丟失數組界限符
      Array size toolarge
      數組尺寸太大
      Bad character in paramenters
      參數中有不適當的字符
      Bad file name format in include
      directive
      包含命令中文件名格式不正確
      Bad ifdef directive synatax
      編譯預處理ifdef 有語法錯
      Bad undef directive syntax
      編譯預處理undef 有語法錯
      Bit field too large
      位字段太長
      Call of non-function
      調用未定義的函數
      Call to function with no
      prototype
      調用函數時沒有函數的說明
      Cannot modify a const object
      不允許修改常量對象
      Case outside of switch
      漏掉了case 語句
      Case syntax error
      Case 語法錯誤
      Code has no effect
      代碼不可述不可能執行到
      Compound statement missing{
      分程序漏掉"{"
      Conflicting type modifiers
      不明確的類型說明符
      Constant expression required
      要求常量表達式
      Constant out of range in
      comparison
      在比較中常量超出范圍
      Conversion may lose
      significant digits
      轉換時會丟失意義的數字
      Conversion of near pointer not
      allowed
      不允許轉換近指針
      Could not find file ``xxx``
      找不到XXX 文件
      Declaration missing ;
      說明缺少";"
      Declaration syntax error
      說明中出現語法錯誤
      Default outside of switch
      Default 出現在switch 語句之外
      Define directive needs an
      identifier
      定義編譯預處理需要標識符
      Division by zero
      用零作除數
      Do statement must have while
      Do-while 語句中缺少while 部分
      Enum syntax error
      枚舉類型語法錯誤
      Enumeration constant syntax
      error
      枚舉常數語法錯誤
      Error directive :xxx
      錯誤的編譯預處理命令
      Error writing output file
      寫輸出文件錯誤
      Expression syntax error
      表達式語法錯誤
      Extra parameter in call
      調用時出現多余錯誤
      File name too long
      文件名太長
      Function call missing )
      函數調用缺少右括號
      Fuction definition out of place
      函數定義位置錯誤
      Fuction should return a value
      函數必需返回一個值
      Goto statement missing label
      Goto 語句沒有標號
      Hexadecimal or octal constant
      too large
      16 進制或8 進制常數太大
      Illegal character ``x``
      非法字符x
      Illegal initialization
      非法的初始化
      Illegal octal digit
      非法的8 進制數字
      Illegal pointer subtraction
      非法的指針相減
      Illegal structure operation
      非法的結構體操作
      Illegal use of floating point
      非法的浮點運算
      Illegal use of pointer
      指針使用非法
      Improper use of a
      typedefsymbol
      類型定義符號使用不恰當
      In-line assembly not allowed
      不允許使用行間匯編
      Incompatible storage class
      存儲類別不相容
      Incompatible type conversion
      不相容的類型轉換
      Incorrect number format
      錯誤的數據格式
      Incorrect use of default
      Default 使用不當
      Invalid indirection
      無效的間接運算
      Invalid pointer addition
      指針相加無效
      Irreducible expression tree
      無法執行的表達式運算
      Lvalue required
      需要邏輯值0 或非0 值
      Macro argument syntax error
      宏參數語法錯誤
      Macro expansion too long
      宏的擴展以后太長
      Mismatched number of
      parameters in definition
      定義中參數個數不匹配
      Misplaced break
      此處不應出現break 語句
      Misplaced continue
      此處不應出現continue 語句
      Misplaced decimal point
      此處不應出現小數點
      Misplaced elif directive
      不應編譯預處理elif
      Misplaced else
      此處不應出現else
      Misplaced else directive
      此處不應出現編譯預處理else
      Misplaced endif directive
      此處不應出現編譯預處理endif
      Must be addressable
      必須是可以編址的
      Must take address of memory
      location
      必須存儲定位的地址
      No declaration for function
      ``xxx``
      沒有函數xxx 的說明
      No stack
      缺少堆棧
      No type information
      沒有類型信息
      Non-portable pointer
      assignment
      不可移動的指針(地址常數)賦

      Non-portable pointer
      comparison
      不可移動的指針(地址常數)比

      Non-portable pointer
      conversion
      不可移動的指針(地址常數)轉

      Not a valid expression format
      type
      不合法的表達式格式
      Not an allowed type
      不允許使用的類型
      Numeric constant too large
      數值常太大
      Out of memory
      內存不夠用
      Parameter ``xxx`` is never
      used
      能數xxx 沒有用到
      Pointer required on left side of
      ->
      符號->的左邊必須是指針
      Possible use of ``xxx`` before
      definition
      在定義之前就使用了xxx(警告)
      Possibly incorrect assignment
      賦值可能不正確
      Redeclaration of ``xxx``
      重復定義了xxx
      Redefinition of ``xxx`` is not
      identical
      xxx 的兩次定義不一致
      Register allocation failure
      寄存器定址失敗
      Repeat count needs an lvalue
      重復計數需要邏輯值
      Size of structure or array not
      known
      結構體或數給大小不確定
      Statement missing ;
      語句后缺少";"
      Structure or union syntax error
      結構體或聯合體語法錯誤
      Structure size too large
      結構體尺寸太大
      Sub scripting missing ]
      下標缺少右方括號
      Superfluous & with function or
      array
      函數或數組中有多余的"&"
      Suspicious pointer conversion
      可疑的指針轉換
      Symbol limit exceeded
      符號超限
      Too few parameters in call
      函數調用時的實參少于函數的
      參數不
      Too many default cases
      Default 太多(switch 語句中一
      個)
      Too many error or warning
      messages
      錯誤或警告信息太多
      Too many type in declaration
      說明中類型太多
      Too much auto memory in
      function
      函數用到的局部存儲太多
      Too much global data defined
      in file
      文件中全局數據太多
      Two consecutive dots
      兩個連續的句點
      Type mismatch in parameter
      xxx
      參數xxx 類型不匹配
      Type mismatch in
      redeclaration of ``xxx``
      xxx 重定義的類型不匹配
      Unable to create output file
      ``xxx``
      無法建立輸出文件xxx
      Unable to open include file
      ``xxx``
      無法打開被包含的文件xxx
      Unable to open input file ``xxx``
      無法打開輸入文件xxx
      Undefined label ``xxx``
      沒有定義的標號xxx
      Undefined structure ``xxx``
      沒有定義的結構xxx
      Undefined symbol ``xxx``
      沒有定義的符號xxx
      Unexpected end of file in
      comment started on line xxx
      從xxx 行開始的注解尚未結束文
      件不能結束
      Unexpected end of file in
      conditional started on line xxx
      從xxx 開始的條件語句尚未結
      束文件不能結束
      Unknown assemble instruction
      未知的匯編結構
      Unknown option
      未知的操作
      Unknown preprocessor
      directive: ``xxx``
      不認識的預處理命令xxx
      Unreachable code
      無路可達的代碼
      Unterminated string or
      character constant
      字符串缺少引號
      User break
      用戶強行中斷了程序
      Void functions may not return a
      value
      Void 類型的函數不應有返回值
      Wrong number of arguments
      調用函數的參數數目錯
      ``xxx`` not an argument
      xxx 不是參數
      ``xxx`` not part of structure
      xxx 不是結構體的一部分
      xxx statement missing (
      xxx 語句缺少左括號
      xxx statement missing )
      xxx 語句缺少右括號
      xxx statement missing ;
      xxx 缺少分號
      xxx`` declared but never used
      說明了xxx 但沒有使用
      xxx`` is assigned a value which
      is never used
      給xxx 賦了值但未用過
      Zero length structure
      結構體的長度為零

      Tags:keil c,編譯器,錯誤,解決方法  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      推薦文章
      最新推薦
      熱門文章
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 久久综合给合久久狠狠狠97色 | 国产综合无码一区二区色蜜蜜| 色综合久久久久综合体桃花网| 色诱久久久久综合网ywww| 91精品一区二区综合在线| 狠狠色狠狠色综合系列| 亚洲欧洲国产成人综合在线观看| 91精品国产91久久综合| 亚洲色偷偷综合亚洲AV伊人蜜桃| 久久本道综合久久伊人| 亚洲国产欧美国产综合一区| 狠狠综合久久AV一区二区三区| 色综合久久夜色精品国产| 亚洲精品第一国产综合境外资源| 色综合久久天天影视网| 久久狠狠色狠狠色综合| 亚洲国产成人久久综合区| 久久婷婷午色综合夜啪 | 国产成人综合美国十次| 婷婷综合久久中文字幕蜜桃三 | 亚洲欧洲日产国产综合网| 思思91精品国产综合在线| 91丁香亚洲综合社区| 久久精品亚洲综合专区| 国产成人亚洲综合在线| 精品无码综合一区二区三区| 2021精品国产综合久久| 色婷婷综合久久久久中文一区二区 | 亚洲欧美熟妇综合久久久久 | 精品综合久久久久久蜜月| 狠狠综合久久av一区二区| 国产成人综合久久精品免费| 色欲色香天天天综合网WWW| 亚洲综合国产成人丁香五月激情| 亚洲国产精品综合久久2007| 色综合天天综合给合国产| 久久综合丝袜长腿丝袜| 色婷婷久久综合中文久久蜜桃 | 亚洲伊人久久综合中文成人网| 麻豆精品一区二区综合av| 熟天天做天天爱天天爽综合网 |