在Keil uVision4中,用C语言,不调用的子程序,会不会编译?
在编译8051时,如果有一个或者多个子程序没有被调用,就会有警告,说有程序没有被调用。而且没有调用的子程序代码,也会被编译;在编译ARM(LPC1768)时,有子程序没有...
在编译8051时,如果有一个或者多个子程序没有被调用,就会有警告,说有程序没有被调用。而且没有调用的子程序代码,也会被编译; 在编译ARM(LPC1768)时,有子程序没有被调用,不会有警告,不调用的程序有不会编译为代码。 问题:这两者都是用相同软件,有何区别?为什么8051不可以自动不编译没有调用的子程序?
这是我自己亲自试过的,ARM编译时,确实如此,我想知道Cx51,MDK两者的设计的不同,及资料。 展开
这是我自己亲自试过的,ARM编译时,确实如此,我想知道Cx51,MDK两者的设计的不同,及资料。 展开
4个回答
展开全部
1. “这两者都是用相同软件,有何区别?”
是不同的软件。
2. “为什么8051不可以自动不编译没有调用的子程序?”
因为用户可能在汇编中隐式调用某个字程序。
对于你所说“在编译ARM(LPC1768)时,有子程序没有被调用,不会有警告,不调用的程序有不会编译为代码”我持怀疑态度。
不管哪种方式编程都很有可能隐式调用函数的,如通过函数指针。所以不编译非显式调用的子程序是明显违反编程人员意图的行为。两种可能:默认项目设置不当;或者对这类子程序需要添加特别的类型说明或编译开关。
想知道两种编译套装的区别,最好的资料就是其自带的说明文档。那几十兆的说明文档看下来包你受益无穷。
是不同的软件。
2. “为什么8051不可以自动不编译没有调用的子程序?”
因为用户可能在汇编中隐式调用某个字程序。
对于你所说“在编译ARM(LPC1768)时,有子程序没有被调用,不会有警告,不调用的程序有不会编译为代码”我持怀疑态度。
不管哪种方式编程都很有可能隐式调用函数的,如通过函数指针。所以不编译非显式调用的子程序是明显违反编程人员意图的行为。两种可能:默认项目设置不当;或者对这类子程序需要添加特别的类型说明或编译开关。
想知道两种编译套装的区别,最好的资料就是其自带的说明文档。那几十兆的说明文档看下来包你受益无穷。
展开全部
你好,我也用这款软件,更正一个观点:不调用的子程序(module模块),编译器仍旧编译,占用空间,只是不链接,这个可以在输出的汇编中看到分配的段。其次编译是8051有告警是你IDE里告警选项设置问题,可以设置为不告警。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开发编译工具的开发人员的思维方式不用,当然开发出来的工具也存在差异。
没调用的程序被编译很正常啊,VC就是这样的,只要不连接到生存的HEX文件中就可以了。
问题的关键是在于生成的HEX文件有没有包含没调用但编译了函数。
没调用的程序被编译很正常啊,VC就是这样的,只要不连接到生存的HEX文件中就可以了。
问题的关键是在于生成的HEX文件有没有包含没调用但编译了函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
软件的属性问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询