打印

求宏定义

[复制链接]
3955|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ayb_ice|  楼主 | 2010-6-13 10:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
原来有数组
char table[] = {"11110000"};
现需要修改增加为
char table[] = {1,0, "11110000"};
但有些编译器不支持以上写法
也不想改动太大,特别是"11110000"部分不想改动太大
求用宏实现

#define MACRO(a,b, c)   xxx // 实现上面的功能
char table[] = {MACRO(1,0, "11110000")};

相关帖子

沙发
voidx| | 2010-6-13 12:35 | 只看该作者
本帖最后由 voidx 于 2010-6-14 10:19 编辑

51用iar的说:
用宏可以搞定。

24楼给出答案。

使用特权

评论回复
板凳
ayb_ice|  楼主 | 2010-6-13 13:03 | 只看该作者
LS
正是IAR EW8051
具体怎么搞
请赐教

使用特权

评论回复
地板
一棵小草| | 2010-6-13 13:45 | 只看该作者
char table[] = {"11110000"};
char table[] = {1,0, "11110000"};         //这个也不支持啊,呵呵

能不能先定义
char table[] = {"1111000000"};
然后在函数初始化当中,再插入'1','0'?

使用特权

评论回复
5
ayb_ice|  楼主 | 2010-6-13 14:13 | 只看该作者
char table[] = {1,0, "11110000"};
IAR就是不支持这种写法,KEILC51支持这种写法,所以才想用宏实现这种功能,目前暂时用结构体来代替的,但已经
是大变样了
但是这个宏怎么定义,是问题了

使用特权

评论回复
6
ic_ic| | 2010-6-13 14:18 | 只看该作者
化解:
char table[] = {1,0, "11110000"};

char table[] = {1,0, 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30};
如何??

使用特权

评论回复
7
ayb_ice|  楼主 | 2010-6-13 15:28 | 只看该作者
分解当然可以,但
1:意义完全变了,不具备可读性,也难以维护
2:我这只是一个例子,项目其实是一个很大的数组,这样修改量也大,修改也容易出错
3:调试时经常会用到其中的字符串<复制后通过串口助手发出去>,分解后字符串不能复制,非常麻烦
....

使用特权

评论回复
8
hanfei08131106| | 2010-6-13 15:50 | 只看该作者
#define MACRO(a,b,c)   xxx // 实现上面的功能
char table[] = {MACRO(1,0, "11110000")};
c的定义是不是要和"11110000"一致????

使用特权

评论回复
9
原野之狼| | 2010-6-13 15:52 | 只看该作者
LZ这个问题挺为难人的:lol

使用特权

评论回复
10
tomhe666| | 2010-6-13 16:08 | 只看该作者
本帖最后由 tomhe666 于 2010-6-13 16:49 编辑

干么要这样呢,可以这个形式的
char table[] = {"\x01\x0011110000"};

//=====================
我承认我错了,刚才试了下,达不到这个效果
改成这样好了
char table[] = {"\x01\x00""11110000"};

使用特权

评论回复
11
voidx| | 2010-6-13 16:21 | 只看该作者
本帖最后由 voidx 于 2010-6-13 16:42 编辑

楼上是标准形式。

使用特权

评论回复
12
原野之狼| | 2010-6-13 16:42 | 只看该作者
10L是个好办法

使用特权

评论回复
13
ayb_ice|  楼主 | 2010-6-13 16:45 | 只看该作者
10L的结果不完全对啊

使用特权

评论回复
14
tomhe666| | 2010-6-13 16:48 | 只看该作者
这样好了,改动不大
char table[] = {"\x01\x00""11110000"};

使用特权

评论回复
15
voidx| | 2010-6-13 16:50 | 只看该作者
本帖最后由 voidx 于 2010-6-13 16:51 编辑

1.楼主先说一下存储格式。

2.此贴分数太少,才1分而已。

使用特权

评论回复
16
原野之狼| | 2010-6-13 16:58 | 只看该作者
在VC里测试了一下 看图

使用特权

评论回复
17
voidx| | 2010-6-13 17:00 | 只看该作者
char table[] = {1,0, "11110000"};

1,0长度固定1位,或者两位,用宏可以搞定。

使用特权

评论回复
18
mohanwei| | 2010-6-13 18:14 | 只看该作者
还是先说说目的是什么吧,用ultraedit的正则表达式替换功能可以非常方便处理这些批量修改的问题,还有列编辑操作模式……

使用特权

评论回复
19
xlsbz| | 2010-6-13 19:36 | 只看该作者
引号是个什么东东?

使用特权

评论回复
20
ayb_ice|  楼主 | 2010-6-14 08:17 | 只看该作者
非常感谢 tomhe666 大虾
结果完全正确
又长了点知识

使用特权

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

本版积分规则

222

主题

15445

帖子

34

粉丝