我有以下程序C編譯器如何解釋這個程序?
struct test
{
int length;
union
{
struct
{
int pid_test;
int age;
}_testing1;
struct
{
int pid_test;
int age;
}_testing2;
}_un;
};
#define pid_test _un._testing1.pid_test
int main()
{
{
struct test *pOBJ = (struct test *)malloc(sizeof(struct test));
pOBJ->_un._testing2.pid_test = 1;
free(pOBJ);
}
}
當我運行它,它給了我下面的錯誤
error: ‘struct <anonymous>’ has no member named ‘_un’
當我以下列方式改變了代碼,它工作正常。
pOBJ->pid_test = 1;
我不知道編譯器如何解釋上述代碼。 任何幫助將高度讚賞
令牌令牌和語法規則使用語法規則。請更具體地說明你的意思。 – Olaf
一個強制性的_「請不要將'malloc'和朋友的回報放在C中_」_評論(PS:有一個原因,爲什麼大多數人使用大寫的大寫字母,而不是結構成員) –