打印

ADS下关于转移符的使用!

[复制链接]
1773|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
again_gyf|  楼主 | 2008-6-15 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中使用了转义符来定义了一个数组如
char arry[] = {"\xfaABC"};
编译出错,提示C2448E: overlarge escape '\xfaa' treated as '\xaa' 
请问我该怎么解决呢?哪位高手知道的话告诉我下哦!

相关帖子

沙发
masashinakayama| | 2008-6-15 16:29 | 只看该作者

问这种问题?

回去把C语言读上一百遍
还问就txjjds

使用特权

评论回复
板凳
again_gyf|  楼主 | 2008-6-15 17:35 | 只看该作者

请问楼上

楼上你大概没看懂我的意思
比如如果你想定义一个字符串数组arry
arry[0] = 0xfa
arry[1] = 'A'
arry[2] = 'B'
......
那么你该怎么来定义arry呢?

用八进制来转义可以
char arry[] = {"\372ABC"};
但为什么用16进制就不可以?

使用特权

评论回复
地板
again_gyf|  楼主 | 2008-6-15 18:33 | 只看该作者

总算在IAR的帮助文档中看到说明了!

You can also write numeric escape sequences using either octal or hexadecimal digits. An octal escape sequence takes one of the forms:

    \d or \dd or \ddd
The escape sequence yields a code value that is the numeric value of the 1-, 2-, or 3-digit octal number following the backslash (\). Each d can be any digit in the range 0-7.

A hexadecimal escape sequence takes one of the forms:

    \xh or \xhh or ...
The escape sequence yields a code value that is the numeric value of the arbitrary-length hexadecimal number following the backslash (\). Each h can be any decimal digit 0-9, or any of the letters a-f or A-F. The letters represent the digit values 10-15, where either a or A has the value 10.

使用特权

评论回复
5
农民讲习所| | 2008-6-16 09:43 | 只看该作者

不是ADS中,是C标准:\x0fa,代表ascii=fa

使用特权

评论回复
6
xwj| | 2008-6-16 09:48 | 只看该作者

我觉得,这样混合写的话,断句很成问题

很容易产生歧义

使用特权

评论回复
7
农民讲习所| | 2008-6-16 10:26 | 只看该作者

可以用宏表示

#define ASCIIHEX(y) \x0y

使用特权

评论回复
8
Again_gyf| | 2008-6-17 10:54 | 只看该作者

re

楼上有什么好办法吗?
来一个字符串数组arry
arry[0] = 0xfa
arry[1] = 'A'
arry[2] = 'B'
arry[3] = 'C'
除了用char arry[] = {"\372ABC"}

我觉得大家肯定会遇到这样的问题的呀,当你要写ASCII中无法打印的字符时,难道单个来吗?

使用特权

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

本版积分规则

48

主题

630

帖子

0

粉丝