keil C中的警告:UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 是因为什么造成的?

WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
2025-06-21 01:23:38
推荐回答(3个)
回答1:

这个警告是因为所给的段未被调用,已被排除在覆盖过程之外。

keil C中的警告解释:

  1. WARNING1:UNSOLVED EXTERNAL SYMBOLS

    指定模块的外部符号在PUBLIC符号表中找不到

  2. WARNING2:REFERENCE MADE TO UNSOVED EXTERNAL

    访问了未能匹配的外部符号code地址

  3. WARNING4:DATA SPACE MEMORY OVERLAP

    数据空间指定范围出现覆盖

  4. WARNING5:CODE SPACE MEMORY OVERLAP

    程序空间指定范围出现覆盖

  5. WARNING6:XDATA SPACE MEMORY OVERLAP

    外部数据空间指定范围出现覆盖

  6. WARNING7:MODULE NAME NOT UNIQUE

    模块名重名。模块未处理

  7. WARNING8:MODULE NAME EXPLICITLY REQUESTED FROMANOTHER FILE

    其他文件指名要求本模块名

  8. WARNING9:EMPTYABSOLUTE SEGMENT

    本模块包含空的绝对段,因未定位,它可能在不通知的情况下随时被覆盖

  9. WARNING10:CANNOT DETERMINE ROOT SEGMENT

    L51 对输入文件要求分辨是C51还是PL/M文件,然后进行流程分析,在无法确定的时候,发出本警告。它发生在主程序被汇编调用的时候,需要程序员用OVERLAP 特殊控制选项进行干预

  10. WARNING11:CANNOT FIND SEGMENT OR FUNCTION NAME

    在目标模块中找不到OVERLAP控制选项中规定的段或者函数间调用

  11. WARNING12:NO REFERENCE BETWEEN SEGMENTS

    试图用OVERLAP控制选项删除本来不存在的段间访问或者函数间调用

  12. WARNING13:RECURSIVE CALL TO SEGMENT

    CALLER段递归调用SEGMENT段。PL/M51和C51的非重入函数不允许递归调用

  13. WARNING14:IMCOMPIABLE MEMORYMODEL

    指定模块试图与以前不同的存储模式编译

  14. WARNING15:MULTICALL TO SEGMENT

    两个函数调用同一个函数(如主函数和中断函数),参数和局部变量将被覆盖

  15. WARNING15:UNCALLED SEGMENT,IGNORED FOR OVERLAP PROCESS

    所给的段未被调用,已被排除在覆盖过程之外

回答2:

delay0()函数有实体却未被引用,因此连接器给出这个警告。
由于未被显式引用,所以编译器处理这个函数时比较小心,所有变量都不参与overlay处理,怕你是通过函数指针或别的什么手段调用的。

回答3:

WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
不影响运行啊,只是说你定义的函数没有调用而已