包含未识别的结构定义

时间:2013-10-06 17:30:35

标签: c struct typedef member

这一定是我教授宣布typedef的方式,因为我还没有遇到过这个问题。

我有以下(片段)头文件,以及使用它的随附代码:

polynomial.h -

#ifndef POLYNOMIAL_H_
#define POLYNOMIAL_H_

struct term {
    int coef;
    int exp;
    struct term  *next;
};

typedef struct term term;

typedef term * polynomial;

#endif

polynomom.c -

#include "polynomial.h"

void display(polynomial p)
{

    if (p == NULL) printf("There are no terms in the polynomial...");

    while (p != NULL) {

        // Print the term
        if (p.exp > 1) printf(abs(p.coef) + "x^" + p.exp);
        else if (p.exp == 1) printf(abs(p.coef) + "x");
        else printf(p.coef);

        // Print the sign of the next term, if it applies
        if (p.next != NULL) {
            if (p.next->coef > 0) printf(" + ");
            else printf(" - ");
        }
    }
}

但每次尝试访问结构的任何属性时,我都会得到以下内容:

error: request for member 'exp' in something not a structure or union

包含,定义和所有内容 - 我只是在C中使用结构和typedef做了类似的事情,但我没有使用这种语法:typedef term * polynomial;。我想这可能会导致问题,并让我失望。

如果我无法以p.expp.coefp.next访问结构的成员,我该怎么办?

PS - typedef term * polynomial;到底是什么意思?我想“多个术语组成一个多项式”,但我不明白term的访问权限是如何变化的。

1 个答案:

答案 0 :(得分:1)

polynomial被typedefed作为指向term的指针。您无法使用.来访问其元素。你必须先取消引用它:

(*p).next

或使用箭头操作符:

p->next