我碰到這個簡單的程序就某處使用的#define定義結構對象
#include<stdio.h>
#include<stdlib.h>
char buffer[2];
struct globals {
int value;
char type;
long tup;
};
#define G (*(struct globals*)&buffer)
int main()
{
G.value = 233;
G.type = '*';
G.tup = 1234123;
printf("\nValue = %d\n",G.value);
printf("\ntype = %c\n",G.type);
printf("\ntup = %ld\n",G.tup);
return 0;
}
它編譯(使用gcc)和執行很好,我得到下面的輸出:
Value = 233
type = *
tup = 1234123
我不是確定#define G語句的工作方式。 G是如何定義爲struct globals類型的對象的?
你'buffer'太小,它的長度應該至少'的sizeof(結構全局)'。 –
@ user28264提供了一個寫得很好並且詳盡的答案。如果它回答了你的問題或給出了關於問題的更多信息/告訴它爲什麼不夠,你應該將其標記爲接受。否則,由於沒有接受答案,它將保持未答覆狀態。 –