<th id="alkcr"><pre id="alkcr"></pre></th>

  • 打印

    [技術支持] Keil環境下頭文件包含異常

    [復制鏈接]
    218|5
    跳轉到指定樓層
    樓主

    復制代碼
    在KEIL環境下使用 HC89F0531進行開發。現在剛剛新建了個很簡單的工程,里面有兩個c源文件 main.c 和 clock.c和一個h頭文件head.h。main.c 文件內容如下:
    1. #include "head.h"

    2. void main(void)
    3. {
    4.     uchar i;

    5.     InitClock();
    6.     while (1)
    7.     {
    8.         i++;
    9.     }
    10. }
    復制代碼


    clock.c 文件內容如下:
    1. #include "head.h"

    2. void InitClock(void)
    3. {
    4. CLKSWR  = 0x51;
    5. CLKDIV = 0X01;
    6. }
    復制代碼


    head.h頭文件內容如下:
    1. #ifndef HEAD_H_
    2. #define HEAD_H_

    3. #include "HC89F0531.h"

    4. void InitClock(void);

    5. #endif
    復制代碼


    整個工程沒有其他源文件和頭文件了,很簡單的一個工程, 然后編譯工程出現了下面的這兩種錯誤:
    1. linking...
    2. ***ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    3. SYMBOL: P0M0
    4. MODULE: .\Out\clock.obj(CLOCK)
    5. ...
    6. ...
    7. ...
    8. ***WARNING L6: XDATA SPACE MEMORY OVERLAP
    9. FROM: FE80H
    10. TO: FE80H
    11. ...
    12. ...
    13. ...
    復制代碼
    意思就是所有的寄存器定義出現了重定義, 外部數據空間重疊,其實是XSFR空間重疊,看上去根本原因就是 HC89F0531.h 頭文件被包含了多次,但是從代碼上看不應該被包含多次,有朋友知道是什么原因嗎???




    使用特權

    評論回復
    沙發
     樓主 | 2019-9-19 10:10 | 只看該作者
    有沒有人遇到過這種問題??

    使用特權

    評論回復
    板凳
    | 2019-9-19 15:24 | 只看該作者
    加上 #define        ALLOCATE_EXTERN

    使用特權

    評論回復
    地板
    | 2019-9-25 00:04 | 只看該作者
    樓上方法對嗎,清理一下工程

    使用特權

    評論回復
    5
    | 2019-9-25 00:04 | 只看該作者
    樓主解決了沒以前我也遇到過,后來刪了重新弄就好了。

    使用特權

    評論回復
    6
    | 2019-9-28 18:08 | 只看該作者
    放一個文件試試看。

    使用特權

    評論回復
    掃描二維碼,隨時隨地手機跟帖
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則

    我要發帖 投訴建議 創建版塊 申請版主

    快速回復

    您需要登錄后才可以回帖
    登錄 | 注冊
    高級模式

    論壇熱帖

    在線客服 快速回復 返回頂部 返回列表
    成人短片线上看