سؤال

أريد استخدام بعض البنية الأساسية في C مثل ما يلي:

struct p {
    int a;
    int b;
    p * next;
}

ومع ذلك ، فإنه يفشل في التجميع مع error: parse error before "p" على الخط مع p * next;.

هل لديك أي فكرة عما يمكن أن يكون السبب في هذه المشكلة؟

هل كانت مفيدة؟

المحلول

تعيش الهياكل C في مساحة اسم مختلفة ويجب أن تكون محطمة بشكل صريح ، وبالتالي:

struct p {
    int a;
    int b;
    struct p * next;
};

ولا تنسى النسيكي في النهاية! :-)

يمكنك التظاهر بأنك في C ++ هكذا: typedef struct p { /*...*/ } p;. ولكن أعتقد أن next لا يزال من الممكن إعلانه على النحو الوارد أعلاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top