[英]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.