سؤال

لدي مشكلة بسيطة وشملت الملف.

الملف يتم تضمينها في اثنين من برامج MFC - واحد الذي هو dll ، كما أنها تجمع نفسها في غير mfc dll.

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

لأن هذا كان اختبارا أنا ببساطة إضافة المصدر إلى بلدي المشروع ودعا وظائف.حصلت على هذا الخطأ: خطأ في بناء الجملة :في عداد المفقودين ')' قبل ';'

الملف بشكل صحيح, و أنا على حد سواء .cpp و .ح في المجلد المصدر ، ضمن مشروع لكنه لن ترجمة.

أنا في نهاية المطاف خلق صغير جدا اختبار المشروع ، main.cpp, spooler.cpp و التخزين المؤقت.ح (التخزين المؤقت هو التفاف حول الإتصالات) و حاول تجميع ذلك.نفس القضية.

لذلك أنا مزقت كل dll الاشياء ذات الصلة فقط في حالة وجود مشكلة غريبة مع هذا و مع ذلك لن ترجمة.

لا أستطيع التفكير في حياة لي ما هو الخطأ.لا أحد آخر لديه أي أفكار ؟

p.s.جيف كنت حقا بحاجة إلى إضافة القدرة على إرفاق الملفات لأن المصدر أن تملأ الكثير من الشاشات مع البيانات.

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

المحلول

هذا لا يكون أي شيء للقيام مع طريقة إدراج ملفات انه خطأ في بناء الجملة التي تحصل عليها لأنك لم العش ( و ) بشكل صحيح.

نصائح أخرى

بناء باستخدام الخيار /P وهو ما سيخلق معالجة الملف (عادة مع .أنا التمديد).

في Visual Studio الخيار سوف يكون على خصائص المشروع تحت شيء من هذا القبيل:

C/C++  -  Preprocessor  -   Generate Preprocessed File

مع ذلك يمكنك ان ترى بالضبط كيف وحدات الماكرو يتم توسيعها.قد تحتاج إلى تشغيل .لقد الملف من خلال مترجم إلى العثور على نفس الخط الذي يسبب خطأ في بناء الجملة.يمكن أن يكون الألم من قراءة ما بعد معالجة الملف ، ولكن يجب أن تظهر ما يجري.

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

إذا كان هذا الكود أبدا وقد تم تجميعها بشكل صحيح ، ثم إجابات أخرى أقترح عليك التحقق من فتح/إغلاق "(" هي على الأرجح مكان للبدء.

المترجم الخاص بك ينبغي أن أقول لكم ما خط الخطأ كان على.حاول البحث عن السابقة "(" قبل نهاية هذا الخط.

كنت بحاجة إلى معرفة ما هي الأشياء التوسع.ولا سيما ما هو ID_SPOOLER_EVENT?إذا كان غير متوازن بين قوسين ، هذا هو الجاني.ولو لم تذهب مع مايك ب المشورة.هذا يبدو مثل المعالج المسألة بالنسبة لي.

التعليمات البرمجية التي يتم استخدامها:

// the only two includes
#include <windows.h>
#include "spooler.h"
// in WinMain
// create window then...
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);

SpoolerInitiallize( hwnd, ID_SPOOLER_EVENT ); // <-- our function
...

و نعم, وأنا أعلم أنها مكتوبة خطأ و كلمة التهيئة هي مكتوبة خطأ في جميع أنحاء الوثائق أيضا.للأسف لا يمكن تغيير ونحن أيضا توريد هذا dll إلى أطراف ثالثة.

حاول ما مايك ب قال مع المعالج.

هذا الاقتراح ذكرني لماذا هذا الخطأ بدا مألوفا جدا.بالنسبة لي, كان قصير جدا #define أنه تم استبدال اسم متغير مع حرفية الباحث أو شيء من هذا القبيل.سيئة.

تشغيل التعليمات البرمجية من خلال preproccessor هو كيف اكتشفت ما كان يحدث.

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