سؤال

أحاول تهيئة بيئة C المعدنية C مع التعليمات البرمجية التالية، ولكن احصل على الأخطاء التالية في سطر Memets. خطأ CCN3275 IMIJWS0.METAL.SAMPLIB (MEM): 6 نص غير متوقع ")" مواجهته. خطأ ccn3045 imijws0.metal.samplib (mem): 6 معرف غير محدد ___memset. خطأ ccn3277 imijws0.metal.samplib (mem): 6 خطأ في بناء الجملة: ممكن مفقود ")" أو "،"؟ فشل تجميع CCN0793 (1) في الملف //'imijws0.metal.samplib(mem). ملف الكائن غير تم إنشاؤه. أدناه هو رمزي


   #include < string.h>
   #include < stdlib.h>
   #include < metal.h>
   void mymtlfcn(void)  {
   struct __csysenv_s mysysenv;
   memset ( &mysysenv, 0, sizeof ( mysysenv ) );
   mysysenv.__cseversion = __CSE_VERSION_1;
   mysysenv.__csesubpool = 129;
   mysysenv.__cseheap31initsize = 131072;
   mysysenv.__cseheap31incrsize = 8192;
   mysysenv.__cseheap64initsize = 20;
   mysysenv.__cseheap64incrsize = 1;

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

المحلول

كانت القضية مع أمر البحث. على الرغم من أنني قمت بالبحث (/ USR / METAL / INCEST) من خلال My JCL، لم أشره مع خيار Nosearch، لذلك تم التقاط String.h من ملفات النظام القياسية بدلا من الإصدار المضمن مع المعدن C. لقد قمت بلصق مجموعة بيانات Optfile التي مررت بها إلى CPARM أدناه للحصول على إرشاد.

// الخيارات DD * حتى قائمة Long Noxref CSect Metal LP64 بحث (/ USR / تشمل / المعادن /)

نصائح أخرى

لذلك، ليس لدي أي فكرة. لكن بعض الاقتراحات:

  1. قد تحاول نسخ / لصق هذا الرمز هنا من هذا المثال فقط للتأكد من أنها تعمل "كما هو متوقع"

  2. ربما حاول تحديد بعض وحدات الماكرو هناب (عندما فعلت برمجة C على ZOS، كان علي أن أفعل ما أعقبت بعض وحدات الماكرو الغريبة من أجل الحصول على الأشياء للعمل. ليس لدي أي شرح تقني معقول لهذا.)

  3. يمكنك تجربة البحث عن memset () باستخدام "= 3.14" (من ISPF.) معرفة ما إذا كانت هناك وحدات أخرى تستخدم هذه الوظيفة، ثم تحقق من الرؤوس التي تتضمنها (أو وحدات الماكرو التي تحددها - إما في ملفات C أو H ) والعمل على انجاحه.

  4. فكر آخر: قبل memset ()، حاول القيام بوضع طباعة () في. إذا حصلت على خطأ في بناء جملة على نفس السطر (فقط للبراعة، بدلا من memet)، يمكنك معرفة ما إذا كانت المشكلة قبل السطر 6 - مثل قوس في غير محله.

  5. أخيرا، إذا كنت أتذكر بشكل صحيح، اضطررت إلى تجميع وحداتي الفردية، ثم ربطها يدويا (ما لم يكتب JCL للقيام بذلك لي.) لذلك قد تضطر إلى الارتباط مرة واحدة للربط مع وحداتك الأخرى، ثم الرابط مرة أخرى ضد مكتبة ج. عدم أن تكون محادثا، لكن: أنت من المؤكد إلى حد ما أنك تفعل كل الرابط يمر؟

أدرك أن هذا هو الكثير من الأطواق لمحاولة أن تقرأ بالفعل الكتيبات، ولكن ربما هناك شيء مفيد لمحاولة؟

أيضا، وربما تعرف بالفعل هذا، ولكن هذا الموقع (للبحث عن رموز الخطأ) مفيدة بلا حدود. (جنبا إلى جنب مع الروابط أعلاه للنص الكامل البحث اليدوي)

يحرر: هذه الصفحة يتحدث أيضا عن "الوظائف المدمجة" - يمكنك المحاولة (كما هو مذكور في أسفل الصفحة) "# Undef Memcpy" لاستخدام الإصدار غير المدمج؟

هل تستطيع أن تظهر لنا حجج التحويل البرمجي الخاص بك؟ تحتاج إلى التأكد من أنك لا تسحب ملفات رأس C القياسية بالإضافة إلى تلك المعدنية C منها. إليك مثال:

xlc -c -Wc,metal,longname,nosearch,'list(./)'  -I. -I /usr/include/metal -I "//'SYS1.SIEAHDRV'" -S -qlanglvl=extended foo.c
as -mrent -mgoff -a=foo.list -o foo.o foo.s
ld -bac=1 -brent -S "//'SYS1.CSSLIB'" -o foo foo.o

هل تفتقد إغلاق هدفين "}" للحصول على الوظيفة؟ ماذا عن أي منهاجي خط القولون المفقودين؟ عند مفقود الحمالات / نصف كولون، يلقي مترجم Z / OS C بعض الرسائل الغريبة / المضللة في بعض الأحيان. ليس لدي ذلك لتجربة، لكنني أفترض أن المعدن يفعل كذلك.

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