Chinaunix首页 | 论坛 | 博客
  • 博客访问: 636045
  • 博文数量: 205
  • 博客积分: 7891
  • 博客等级: 少将
  • 技术积分: 2168
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-29 13:16
文章分类

全部博文(205)

文章存档

2015年(4)

2014年(5)

2013年(1)

2012年(4)

2011年(51)

2010年(86)

2009年(45)

2008年(9)

分类:

2009-10-22 10:32:44

在KEILC编程中,编译器的编译过程是把C编译成汇编,而再由汇编转化为机器码。在汇编
代码阶段,函数的命名是有规则的,就是函数名一律变大写,然后通过特定名字组合变为
一固定标号:
例如 lcd.c文件中的lcdstring()函数,在编译为汇编后标号变为?PR?LCDSTRING?LCD
PR代表这个是函数,然后问号分隔,函数名,再到所在C文件。
这样就引发一个问题,大小写是没区别的,也就是说,如果我们在lcd.c文件中有两个函
数:lcdstring()和LcdString(),那么编译后两个的标号都变为?PR?LCDSTRING?LCD,是会编
译不通过的,虽然标准C中是大小敏感,但在KEILC中,同一个C文件内的函数是大小写不敏
感的。
同上,对于同一类型的全局变量,也有上面的问题。
无聊中提出这个问题,不知道大家是否有留意过?我用KEILC都好久了,还是昨天才发现这
个问题的:)

相关帖子>>>:
  • 如果大小写不区分的话,我用p1时会错误,用P1就可以通过了。我也不知道这时什么问题啊。(0字)hchaochuan[7次]2004-11-12 15:40:14
  • 它会自动命名的。就像flashget下载,重名了它自动加个(1)一样(0字)变成浪子[8次]2004-11-12 9:51:32
    • 我试了,不会的,只会报错。你的KEILC什么版本?(0字)电子白菜[10次]2004-11-12 10:34:18
      • 刚试下!的确会报错(336字)51新手[16次]2004-11-12 10:38:53
        *** FATAL ERROR L256: MODULE CONTAINS DUPLICATE SEGMENT NAMES
            SEGMENT: ?PR?START?0928
            MODULE:  0928.obj (0928)
        • 只要同名子程序存在,不调用也会报错,不是警告(0字)51新手[6次]2004-11-12 10:41:58
      • 你怎么拭的?(0字)变成浪子[6次]2004-11-12 10:39:18
        • 不会KC不支持大小写吧?(0字)变成浪子[7次]2004-11-12 10:43:46
          • lx51.chm - Fatal Error L256(1134字)cnpollux[19次]2004-11-12 10:48:41
            Fatal Error L256 (MODULE CONTAINS DUPLICATE SEGMENT NAMES)
            Summary   *** Fatal Error L256
                MODULE CONTAINS DUPLICATE SEGMENT NAMES
                SEGMENT: segment-name
                MODULE:  filename (modulename)


            Description   A module contains duplicate segment names. This occurs when the C
            source contains two identical function names, that differ only in
            lower/uppercase letters.  

            Copyright (c) Keil Software, Inc. and and Keil Elektronik GmbH. All rights reserved.
  • 以后起不同的名字就可以了.什么东西都不可能没有漏洞吧.(0字)星期天[6次]2004-11-12 10:41:23
  • 找到问题症结:KC不区分大小写。同样的程序,偶在iccavr能通过。(0字)变成浪子[8次]2004-11-12 10:46:50
  • 其实这个是编译过程中的漏洞,我也是昨天在看.M51文件的时候发现的。(108字)电子白菜[16次]2004-11-12 11:03:17
    主要是因为它的命名方式引起的,在同一个.C文件中的确不区分大小写。但我想以后的新
    版本也许会修正这个BUG。
阅读(6215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~