我有以下程序
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;
我不知道编译器如何解释上面提到的代码。 任何帮助将不胜感激
最佳答案
当您定义了 pid_test
宏时,
pOBJ->_un._testing2.pid_test
扩展为
pOBJ->_un._testing2._un._testing1.pid_test
我相信你能发现问题。
关于c - C 编译器如何解释这个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018514/