簡體   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