keil5警告此语言不允许注释 | 您所在的位置:网站首页 › keil5提示文件不存在 › keil5警告此语言不允许注释 |
本文目录一览: 1、KEIL软件里面不注释中文是哪个地方设置错了 2、keil uvision 写不了备注?怎么回事?? 3、keil无法中文注释咋办? 4、启动keil5出现如图警告,并且写函数过程中,不会提示错误,求解决方法 5、keil5不显示错误和警告 6、为什么在Keil c51下 编程ASM文件时,不能添加注释,在语句后面,不能显示文字和冒号。 KEIL软件里面不注释中文是哪个地方设置错了可能不是keil,默认安装一般可以输入中文,可能你的输入法。不过keil对中文输入不怎么着,你可以用其他软件编辑,用keil打开。 keil uvision 写不了备注?怎么回事??编码导致的. keil不支持unicode,当输入中文时默认还是以两个ansi形式保存,所以一旦前面的语句更改了,有可能就没法组成一个汉字了. 比如 "你好" 的16进制编码是 aa bb cc dd,其中aa bb是"你",cc dd是"好",一旦前面有所更改,很容易让编辑器认为 bbcc是一个字,这样就产生了乱码. 解决方法也很简单,在乱码的最面前面加一个空格就行了 -------------------------------------------------------- 刚刚看到注释,其实说到底就是编码的问题啊 你用记事本打开这个源文件的时候是不是显示中文没有问题呢? 你这样试一下吧 用记事本打开这个文件,点另存为,看一下下面的编码一览显示的是什么,如果是UTF-8或者unicode或者gbk之类的你换成ansi保存一下,然后再用keil打开试试.其实就是把文件的编码格式转换一下. 如果你那里安装了UE,那就打开UE-文件-转换也可以。 当然中文注释还你Keil设置的字体有关系,另外如果没有注释符号,注释将成为乱码。 Keil可以中文注释. Keil中的注释方法有两种: 1、 // [注释内容] 这样能注释一整行,知道遇到回车为止 2、 /* [注释内容] */ 这样能注释多行,即使有了回车,还是有效的。 当然中文注释还你Keil设置的字体有关系,另外如果没有注释符号,注释将成为乱码。 启动keil5出现如图警告,并且写函数过程中,不会提示错误,求解决方法Keil 编译时出现错误和警告的总结 和C 编译器错误信息中文翻译 (1)L15 重复调用 ***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP 该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函 数)同时调用,或者同时被多个中断服务程序调用。 出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从 而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候 都可以被ISR 打断,一段时间后又可以 运行,但是相应数据不会丢失)。 原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子 程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数 的内存冲突。 例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,它被一个中断 服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。 解决方法: 如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占 用内存(假设只使用寄存器),则你可以完全忽略这种警告。 如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析(overlay analysis)中除去,例如: OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *) 上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数,而这些被调用在 程序中其他地方也被调用,你可能会需要也将这些函数排除在覆盖分析(overlay analysis)之外。这种OVERLAY 指 令能使编译器除去上述警告信息。 如果函数可以在其执行时被调用,则情况会变得更复杂一些。这时可以采用以下几种方法: 1.主程序调用该函数时禁止中断,可以在该函数被调用时用#pragma disable 语句来实现禁止中断的目的。必 须使用OVERLAY 指令将该函数从覆盖分析中除去。 2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。 3.将该函数设为重入型。例如: void myfunc(void) reentrant { ... } 这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种方法时重入堆 栈必须在STARTUP.A51 文件中配置。这种方法消耗更多的RAM 并会降低重入函数的执行速度。 (2)提示无M51 文件 编译时候提示: F:\...\XX.M51 File has been changed outside the editor, reload ? ------ 解决方法: 重新生成项目,产生STARTUP.
1/9 A51 即可。 (3)L16 无调用 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_COMPARE?TESTLCD 说明:程序中有些函数例如COMPARE(或片段)以前(调试过程中)从未被调用过,或者根本没 有调用它的语句。 这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就 可以。不理它也没什么大不了的。 解决方法:去掉COMPARE()函数或利用条件编译#if …..#endif,可保留该函数并不编译。 (4)L10 和L16"主程序名字写错(或无主程序)" keil5不显示错误和警告 首先要强迫自己不能接受任何错误和警告,否则就无法写出优秀的代码(至少在编译器眼里)。 面对错误,我们必须改正,否则程序不能运行,在这个编译器里面C++函数如果不是void类型,那么必须有返回值,否则会报错。对比v5编译器,只是一个警告而已。 2. 其他错误按照C++语法规则修改即可。 面对警告,很多人选择了忽略,但是我是不能容忍的,要消除警告。大部分警告是可以消除的,面对消除不了的警告,只能上绝招了。 在图中 为什么在Keil c51下 编程ASM文件时,不能添加注释,在语句后面,不能显示文字和冒号。编辑框中,正文、注释的文字颜色,都是更改的; 如果改成了 和背景一样的颜色, 就看不出来了。 标签: keil5警告此语言不允许注释 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |