当前位置:  技术问答>linux和unix

如何宏定义一段代码

    来源: 互联网  发布时间:2016-12-18

    本文导语:  在一个程序中,有若干类似的代码如下: ... echo += snprintf(buf + echo,len - echo,",Item1:"); my_Struct.Rx64Byte+=getStaValue("Item1"); echo += snprintf(buf + echo,len - echo,"%lu",my_Struct.Item1); echo += snprintf(buf + echo,len - echo,",Item2:"); my_Struct....


在一个程序中,有若干类似的代码如下:

...
echo += snprintf(buf + echo,len - echo,",Item1:");
my_Struct.Rx64Byte+=getStaValue("Item1");
echo += snprintf(buf + echo,len - echo,"%lu",my_Struct.Item1);

echo += snprintf(buf + echo,len - echo,",Item2:");
my_Struct.Rx64Byte+=getStaValue("Item2");
echo += snprintf(buf + echo,len - echo,"%lu",my_Struct.Item2);
...


其中,my_Struct为结构体名,Item1,Item2,... ItemN为结构体中的项,本结构项也很多,类似这样的代码很多,
所以想问,如果用一个宏来定义下面这样的代码块的话,该如何实现?
谢谢,其中传给宏的参数就是ItemN。

echo += snprintf(buf + echo,len - echo,",Item1:");
my_Struct.Rx64Byte+=getStaValue("Item1");
echo += snprintf(buf + echo,len - echo,"%lu",my_Struct.Item1);


类似的例子,我也见过,如下:

#define  __GET_ND_STAINFO_ITEM__(ret) 
do{
//echo += snprintf(buf + echo,len - echo,",(ret):");
sta_info_cable.(ret)+=getStaValue(ret);
echo += snprintf(buf + echo,len - echo,"%lu",sta_info_cable.(ret));

}while(0)

|
懂了,这样应该没问题了

#define TMARCO_(X) do{
echo += snprintf(buf + echo,len - echo,","#X":");
my_Struct.X+=getStaValue(#X);
echo += snprintf(buf + echo,len - echo,"%lu",my_Struct.X);
}while(0)

|
参考

#include 
#include 
#include 
#include 
using namespace std;

#define PRINT(X) do{ 
printf(",Item"#X":n"); 
printf("Item"#X); 
}while(0) 

// #define MARCO_(X) do{ 
// echo += snprintf(buf + echo,len - echo,",Item"#X":"); 
// my_Struct.Rx64Byte+=getStaValue("Item"#X); 
// echo += snprintf(buf + echo,len - echo,"%lu",my_Struct."Item"#X); 
// }while(0)


int main()
{
PRINT(1);
return 0;
}

|
帮顶,学习~~

|
宏定义中#表示去字符串
##表示连接

    
 
 

您可能感兴趣的文章:

  • linux下编译c++程序,系统头文件中包含的函数的定义源代码可以查看吗?
  • jquery代码-如何定义一个定制的选择器
  • linux内核源代码中,在哪个文件的哪个地方可以看到定义线程切换时间片大小?
  • 自定义时间格式转换代码分享
  • php生成随机密码自定义函数代码(简单快速)
  • Makefile,如何传递宏定义DEBUG?以便于程序编译或者跳过程序中#ifdef DEBUG中间的代码段?
  • jQuery自定义事件的简单实现代码
  • C#自定义控件添加右键菜单的实现代码
  • Java 自定义错误类示例代码
  • javascript开源软件 iis7站长之家
  • VC和GCC下,为什么定义一个结构体,生成的代码长度不同
  • Python def函数的定义、使用及参数传递实现代码
  • android 自定义Android菜单背景的代码
  • 关于自定义package,这段代码究竟错在哪里?
  • 请问一下,有谁知道linux源代码中socket(int domain, int type, int protocol);函数的定义是在哪个文件中啊?小弟我找了很久,都没找到,谢谢哈。
  • C# .NET自定义类实现伪静态页面的代码
  • EXTJS自定义表单验证的实例代码
  • php强制文件下载的自定义函数代码
  • Android中的Button自定义点击效果实例代码
  • Android自定义桌面功能代码实现
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt类radialgradientpaint的类成员方法: getradius定义及介绍
  • 请问可以用宏定义定义一个二维数组吗?
  • java命名空间javax.xml.stream类xmlinputfactory成员方法: seteventallocator定义参考
  • 想修改路径定义,想找到在哪里定义的,应该怎么办?
  • java命名空间java.text接口attributedcharacteriterator的类成员方法: getallattributekeys定义及介绍
  • php定义数组和使用示例(php数组的定义方法)
  • java命名空间java.beans接口propertyeditor的类成员方法: supportscustomeditor定义及介绍
  • 上次问题解决了,原来是extern被重定义了。。。天阿,关键字也可以被重定义。。。。。欢迎接分
  • java命名空间javax.swing类jtextarea的类成员方法: getcolumnwidth定义及介绍
  • 如何定义一个可变参数的自定义函数
  • java命名空间javax.swing类jtextfield的类成员方法: getcolumnwidth定义及介绍
  • 下面的变量我都下了定义,为什么还出现没定义的信息
  • java命名空间javax.swing类actionmap的类成员方法: allkeys定义及介绍
  • oracle异常(预定义异常,自定义异常)应用介绍
  • java命名空间javax.swing类inputmap的类成员方法: allkeys定义及介绍
  • 为什么我在头文件time.h里找不到time_t的定义呢?只有这个定义typedef __time_t time_t;
  • java命名空间javax.rmi.corba接口valuehandler的类成员方法: iscustommarshaled定义及介绍
  • 函数有定义怎么提示没有低能定义的错误呢?
  • java命名空间javax.swing类jcomponent的类成员方法: resetkeyboardactions定义及介绍
  • android自定义控件和自定义回调函数步骤示例
  • java命名空间java.beans接口customizer的类成员方法: setobject定义及介绍
  • 自定义公共类的装载,包的定义


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3