打印

编译出错,怎么回事~

[复制链接]
2502|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duljsky|  楼主 | 2013-10-19 13:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 duljsky 于 2013-10-20 13:49 编辑

如图所示,在台式机上编译没有出现这种情况,结果考到笔记本上,就报错了!取摸都是用取字模软件生成的~求解~







问题找到了,不知怎么搞得,这个字摸的.c文件中的汉字编码和其他文件的不一样,一般在keil中删除一个汉字都要按退格键两下才删除一个汉字,占两个字节的存储空间,而且会有乱码出现,这个文件中居然按一下就删掉了,也没出现乱码字样。重新建了一个.c文件,把代码拷过去,然后就没再报错了~


图片2.png (81.57 KB )

图片2.png

图片1.png (24.19 KB )

图片1.png
沙发
jjjkkk00| | 2013-10-19 13:35 | 只看该作者
应该是数据类型定义的问题。

检查下两种类型的差别,修正下变量类型。

使用特权

评论回复
板凳
duljsky|  楼主 | 2013-10-19 13:48 | 只看该作者
jjjkkk00 发表于 2013-10-19 13:35
应该是数据类型定义的问题。

检查下两种类型的差别,修正下变量类型。

郁闷的是另一台电脑没有问题啊~

使用特权

评论回复
地板
jjjkkk00| | 2013-10-19 14:08 | 只看该作者
duljsky 发表于 2013-10-19 13:48
郁闷的是另一台电脑没有问题啊~

追溯 .h文件中的定义啊。

其他也没什么好办法。你确定工程中用到的所有头文件,在两台电脑上是完全一致的么?特别是关于#include <stdint.h>等等

使用特权

评论回复
5
duljsky|  楼主 | 2013-10-19 14:16 | 只看该作者
jjjkkk00 发表于 2013-10-19 14:08
追溯 .h文件中的定义啊。

其他也没什么好办法。你确定工程中用到的所有头文件,在两台电脑上是完全一致的 ...

图片1就是字摸结构体定义啊。一样的程序~

使用特权

评论回复
6
dirtwillfly| | 2013-10-19 16:03 | 只看该作者
有没有可能是两台电脑环境变量设置有差异

使用特权

评论回复
7
O狂且O| | 2013-10-19 18:22 | 只看该作者
看手册啊.
144
a value of type <type> cannot be used to initialize an entity of type <type>
The initializing string for a fixed size character array is exactly as long as the array size, leaving no room for a terminating \0, for example:

char name[5] = "Hello";
The name array can hold up to 5 characters. "Hello" does not fit because C strings are always null-terminated (for example, "Hello\0"). The compiler reports:

Error: #144: a value of type "const char [6]" cannot be used to initialize an entity of type "char [5]"
A similar error is also raised if there is an implicit cast of non-zero int to pointer.

For example:

void foo_func( void )
{
  char *foo=1;
}
results in the message:

#144: a value of type "int" cannot be used to initialize an entity of type "char *"
For the cast, this error can be suppressed with the use of the --loose_implicit_cast switch.

使用特权

评论回复
8
O狂且O| | 2013-10-19 18:36 | 只看该作者
本帖最后由 O狂且O 于 2013-10-19 18:43 编辑

从编译器手册介绍可以知道.
"" 默认是字符串多了个 '\0'.
所以, 把汉字内码索引改成 3. 试试???
至于为啥换个电脑就不行了. 我试试看.
=================================
版本不一致?????

使用特权

评论回复
9
O狂且O| | 2013-10-19 18:48 | 只看该作者
搜了下, 貌似编译器不支持中文, 都有这个毛病, 学习了.
加这句可以去除:
#pragma diag_suppress 870   // 看手册介绍

使用特权

评论回复
10
huangfeng33| | 2013-10-19 20:33 | 只看该作者
系统或者应用程序访问的这些文件是不是没在环境变量的路径里?

使用特权

评论回复
11
jim0810| | 2013-10-19 23:36 | 只看该作者
很明显是结构定义问题啊

使用特权

评论回复
12
duljsky|  楼主 | 2013-10-20 13:46 | 只看该作者
dirtwillfly 发表于 2013-10-19 16:03
有没有可能是两台电脑环境变量设置有差异

问题找到了,不知怎么搞得,这个字摸的.c文件中的汉字编码和其他文件的不一样,一般在keil中删除一个汉字都要按退格键两下才删除一个汉字,这个文件中居然按一下就删掉了,也没出现乱码字样。重新建了一个.c文件,把代码拷过去,然后就没再报错了~

使用特权

评论回复
13
duljsky|  楼主 | 2013-10-20 13:51 | 只看该作者
O狂且O 发表于 2013-10-19 18:48
搜了下, 貌似编译器不支持中文, 都有这个毛病, 学习了.
加这句可以去除:

谢谢啊,研究的好深入,向你学习~:)

使用特权

评论回复
14
jjjkkk00| | 2013-10-21 19:06 | 只看该作者
duljsky 发表于 2013-10-20 13:46
问题找到了,不知怎么搞得,这个字摸的.c文件中的汉字编码和其他文件的不一样,一般在keil中删除一个汉字 ...

晕死,看你写的内容以为是直接拷贝过去什么都没变的!平台版本、操作系统版本、所有用到的文件都一致。

有文件存在差异是很无解的事情,纠结。

呵呵。乌龙啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:日行一善

18

主题

127

帖子

1

粉丝