⑴ keil4如何在编译时不编译未调用的函数
会全部编译的,在链接阶段,未调用的函数,会自动被优化掉
⑵ C语言什么情况下函数被调用之前编译器无法看到该函数的原型
函数在未调用之前,编译器无法对其编译,也就看不到函数原型。
⑶ 求解,为什么一直报函数未调用,明明已经调用了
单片机资源有限,和PC程序可不能比啊。KEIL分许出这个函数未被调用,又不敢不链接,只好保留代码段,而且函数里的局部变量也需要在RAM中保留,无法作为一般的局部变量回收,十分浪费。
一般来说,尽量把不用的函数注释掉。
如果既不想删,又不想看到这个警告,那么可以在初始化的地方这么干:
i=0; //随便找个变量即可
if(i) //不可能满足的条件,假调用
{定义到这部分地址去。
⑷ 单片机C语言编程,假如头文件里的函数没有被调用,那么该函数会不会最后编译出来而占用内存
没有用到自然就不会被编译,就不会占空间
如果头文件定义有1000个函数
你的程序只用了1个函数
那么编译后的程序,只有这一个函数的内容
⑸ VB6 中函数声明错误编译不通过,如何解决
这句话是错误的,只有定义在调用之后的函数才需要声明,如果定义在调用之前的函数,无需声明,例子1,定义在调用之后,必须声明:main(){int f();//这个声明是必须的printf("%d",f());}int f(){return 1;}例子2,定义在调用之前,无需声明:int f(){return 1;}main(){/*int f();//这个声明不需要*/printf("%d",f());}最后,这个其实是历史遗留问题,以前的效率较低,编译器多次扫描源程序麻烦,现代编译器为了实现优化,都会反复多次扫描源程序。
⑹ C51编译也是出现有函数没被调用,求解决!!!
有个函数Cls没有被调用过,所以有这个警告。
解决办法1,把这个函数删了或注释掉
解决办法2,不理会这个警告,这个警告对你程序的运行没有影响
解决办法3,假调用,例如修改main函数如下
void main(void)
{
uchar i;
i=0;
if(i)
{
Cls();
}
InitLCD();
Write_String(0x81,"KeyBoard Test");
Write_String(0xc0,"KeyNumber=");
while(1)
{
ScanKey();
Delay(0xffff);
}
}
⑺ 如下图,C++编程时函数代码是灰色的,并且无法被调用,是怎么回事
你这个里面有条件编译,条件不成立,里面的代码是不会被编译的。可以把#ifdef和#endif删掉;或者在前面加上#define _DEBUG
⑻ keilc中怎么使一个库函数不调用时不编译
它不会被嵌入代码而占用空间的,当然动态链接库除外。KEIL把源代码编译成最终执行代码,要经历两个过程,一是编译:即把源文件编译成中间目标文件,简单的说是把C文件编译成.O或.obj文件;二是链接,这个是生成可执行文件的关键,它会根据MAIN函数头和各个中断函数中调用的函数去中间目标文件中选择对应的代码并最终打包到一起生成可执行文件。所以,声明未被用到的函数是不会占用程序存储空间的,但是它会被编译,只是在连接时不会被选用。希望对你有帮助!!!
⑼ 请问在Keil C中对51单片机编程时,头文件中没有被调用到的函数怎么处理
把target options中的device页中选上"Use LX51 ...",然后在LX51 Misc页中的Misc Control中填入"REMOVEUNUSED",确认后重新编译即可自动去掉未调用的函数。
我希望回答问题的人能本着一种解决问题的态度而不是想去批判提问题的人。
—————————来自Just_Engineer的解答,希望可以帮到你。————————————
⑽ C语言中一个函数如果在主函数中没有调用,会被编译么
会的,当你运行时,编译器还要检查你的函数是否有格式或其它错误!