المحول البرمجي خطأ C2143 عند استخدام البنية

StackOverflow https://stackoverflow.com/questions/35333

  •  09-06-2019
  •  | 
  •  

سؤال

أنا تجميع بسيط .ج في visual c++ مع تجميع حسب التعليمات البرمجية C (/TC) وأنا على هذا المحول البرمجي خطأ

خطأ C2143:خطأ في بناء الجملة :مفقودة ';' قبل 'نوع'

على الخط الذي يدعو بسيط البنية

 struct foo test;

الشيء نفسه ينطبق على استخدام الرموز المميزة ل typedef من البنية.

خطأ C2275:'فو' :استخدام غير مشروع من هذا النوع كتعبير عن

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

المحلول

لقد نسيت أن في ج عليك أن تعلن جميع المتغيرات الخاصة بك من قبل أي رمز.

نصائح أخرى

هل قمت بطريق الخطأ حذف الفاصلة المنقوطة في السابق الخط ؟ إذا كان السطر السابق هو #include, قد تضطر إلى البحث في مكان آخر عن المفقودين منقوطة.

تحرير:إذا كان باقي التعليمات البرمجية الخاصة بك صالحة C++ ثم ربما ليس هناك ما يكفي من المعلومات لتحديد ما هي المشكلة.ربما يمكنك الرد على رمز pastebin حتى نتمكن من رؤية كل شيء.

من الناحية المثالية في عملية صنع ذلك أصغر إلى آخر ، وسوف تبدأ فجأة و بعد ذلك اكتشفت المشكلة!

لأن كنت قد قدمت بالفعل ل typedef struct (لأن كنت تستخدم 's1' نسخة) ، يجب أن تكتب:

foo test;

بدلا من

struct foo test;

التي سوف تعمل في كل من C و C++

كيف هو هيكل نوع من المعرفة ؟ هناك طريقتان للقيام بذلك:

// This will define a typedef for S1, in both C and in C++
typedef struct {
     int data;
     int text;
} S1;

// This will define a typedef for S2 ONLY in C++, will create error in C.
struct S2 {
     int data;
     int text; 
};

C2143 يقول أساسا أن المترجم حصلت على عربون أنه يعتقد غير قانوني في السياق الحالي.واحدة من الآثار المترتبة على هذا الخطأ هو أن المشكلة الفعلية قد تكون موجودة من قبل الخط الذي يتسبب برنامج التحويل البرمجي خطأ.كما جريج قال أعتقد أننا بحاجة إلى أن نرى المزيد من التعليمات البرمجية الخاصة بك إلى تشخيص هذه المشكلة.

أنا لست متأكدا لماذا تعتقد حقيقة أن هذا هو صالح رمز C++ هي مفيدة عند محاولة معرفة لماذا لا تجمع مثل C ؟ C++ هي (إلى حد كبير) مجموعة شاملة من ج لذلك هناك أي عدد من الأسباب لماذا صالحة رمز C++ قد لا يكون نحويا تصحيح التعليمات البرمجية C, ليس أقلها أن C++ يعامل البنيات كما دروس!

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