繁体   English   中英

C中的宏数组

[英]Array of macros in C

我可以做一个宏数组吗

我正在尝试定义宏数组,请检查下面的代码,让我知道可以这样做:

#include <stdio.h> 

struct da
{
    unsigned char d1:1;
    unsigned char d2:1;
};

struct da stDataVar;

#define DATA_1 stDataVar.d1
#define DATA_2 stDataVar.d2 = 1

unisgned char arrChar[2] = {DATA_1, DATA_2};

main()
{
 
printf("data = %d\n",arrChar[0]);

}

拥有“一个宏数组”没有任何意义。 在您的情况下,宏可能只是混淆了代码。 特别是,您不应在用于初始化的宏中隐藏副作用。

有什么原因使您无法做到这一点?

// elsewhere in the code:
stDataVar.d2 = 1;

...

unsigned char arrChar[2] = 
{ 
  stDataVar.d1,
  stDataVar.d2
};

arrChar [0]是arrChar [2]的第一个元素,即DATA_1,这是一个宏,该宏在文本上被预处理器替换为stDataVar.d1,这是结构stDataVar(类型struct da)的d1位字段,其为零或垃圾。 (取决于编译器是否默认情况下初始化了一个字符)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM