| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2643 人关注过本帖
标题:vc 可以在数组定义里面使用宏么
取消只看楼主 加入收藏
Vincent800
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-5-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
vc 可以在数组定义里面使用宏么
#define SETBYTE ???

UCHAR data[10] = {SETBYTE(2,5), SETBYTE(3,0), SETBYTE(3,0xa), SETBYTE(2,4)};


就是定义数组为{5,5,0,0,0,0xa,0xa,0xa,4,4};
想搞个通用的宏,数组比较大时就很方便了
搜索更多相关主题的帖子: vc 数组 定义  比较 
2018-02-02 17:56
Vincent800
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-5-17
收藏
得分:0 
谢谢,只能用函数来解决了

#define SETBYTE(n,d) n,(UCHAR)d

    //////////////////////////////////////////////////////////////////////////
    // 初始化数组,不作越界检测
    VOID InitData(UCHAR* data, ...)
    {
        STRUCT(_setbyte)
        {
            INT n;
            INT d;
        };
        vector<_setbyte> vec_sb;
        vec_sb.clear();
        _setbyte sb;

        va_list marker;

        va_start( marker, data );     /* Initialize variable arguments. */
        do
        {
            sb.n = va_arg(marker, INT);
            sb.d = va_arg(marker, INT);
            //Output::DbgStr(TEXT("%p,%p"), sb.n, sb.d);

            if (sb.n>0 && sb.n<100000 && sb.d<256)
                vec_sb.push_back(sb);
            else
                break;
        } while (TRUE);
        va_end( marker );              /* Reset variable arguments.      */

        UINT nPos = 0;
        vector<_setbyte>::iterator psb = vec_sb.begin();
        while (psb != vec_sb.end())
        {
            //Output::DbgStr(TEXT("%p,%02x"), psb->n, psb->d);
            FillMemory(data+nPos, psb->n, psb->d);
            nPos += psb->n;
            //
            psb++;
        }
    }


    //////////////////////////////////////////////////////////////////////////
    UCHAR data[16];
    Common::InitData(data, SETBYTE(2,6), SETBYTE(3,4), SETBYTE(4,8), SETBYTE(1,9), SETBYTE(sizeof(data)-10,0xb));
    TCHAR buffer[100];
    for (int i=0; i<16; i++)
    {
        StringCchPrintf(buffer+i*3, 4, TEXT("%02x "), data[i]);
    }
    Output::DbgStr(buffer);


图片附件: 游客没有浏览图片的权限,请 登录注册
2018-02-03 12:39
Vincent800
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-5-17
收藏
得分:0 
可变参数的函数,不知怎么获取参数个数,我只好这样来判断了

            if (sb.n>0 && sb.n<100000 && sb.d<256)
                vec_sb.push_back(sb);
            else
                break;

可算个bug了
2018-02-03 13:01
Vincent800
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-5-17
收藏
得分:0 
回复 6楼 stop1204
好的
我看了,我就是弄不懂第4点中,循环退出的条件
2018-02-07 00:38
快速回复:vc 可以在数组定义里面使用宏么
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016453 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved