я следующие программыКак компилятор 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 »_ comment (PS: есть причина, почему большинство людей используют верхний регистр для макросов, а не для членов структуры) –