Frage

Ich versuche, die Metall-C-Umgebung mit dem folgenden Code zu initialisieren, aber die folgenden Fehler auf der Memset Linie zu bekommen. ERROR CCN3275 IMIJWS0.METAL.SAMPLIB (MEM): 6 Unerwartete Text ')' aufgetreten.  ERROR CCN3045 IMIJWS0.METAL.SAMPLIB (MEM): 6 Undeclared Identifikator ___MEMSET.  ERROR CCN3277 IMIJWS0.METAL.SAMPLIB (MEM): 6 Syntaxfehler: möglicherweise fehlende ')' oder ''?  CCN0793 (I) Compilation fehlgeschlagen für Datei //'IMIJWS0.METAL.SAMPLIB(MEM)‘. Objektdatei nicht erstellt. Unten ist mein Code


   #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;

War es hilfreich?

Lösung

Das Problem war mit der Suchreihenfolge. Obwohl ich Suche tat (/ usr / Metall / include) aus mit meiner JCL habe ich gehe sie nicht mit einer nosearch Option, so string.h wurde immer von dem Standardsystem librarys anstelle die Version, die in Metall-C aufgenommen ich habe meine optfile-Datensatz eingefügt ich für refference zum CPARM unten übergeben.

//OPTIONS DD *
 SO
 LIST
 LONG
 NOXREF
 CSECT
 METAL
 LP64
 NOSEARCH
 search(/usr/include/metal/)

Andere Tipps

Also, ich habe keine Ahnung. Aber einige Vorschläge:

  1. Sie könnten versuchen, das Kopieren / Einfügen diesen Code hier von dieses Beispiel nur um sicherzustellen, dass es funktioniert 'wie erwartet'

  2. Vielleicht versuchen, einige der Makros definieren hier ? (Wenn ich es tat C-Programmierung auf zOS, ich hatte einige seltsame Makros enthalten, um zu tun, Sachen zu arbeiten. Ich habe keine angemessene technische Erklärung.)

  3. Sie könnten versuchen, für Memset Suche () mit „= 3,14“ (von ispf.) Sehen Sie, wenn alle anderen Module, die Funktion zu verwenden, und dann die Header überprüfen, die sie enthalten (oder Makros, die sie definieren - entweder in die C-Dateien oder H-Dateien) es funktioniert.

  4. Ein anderer Gedanke:. Vor dem memset (), versuchen dabei eine printf () in Putten Wenn Sie einen Syntaxfehler in der gleichen Zeile erhalten (nur für printf, anstatt Memset), dann können Sie das Problem sehen, wenn ist vor Zeile. 6 - wie eine unangebrachte Klammer

  5. Schließlich, wenn ich mich richtig erinnere, hatte ich meine einzelne Module zu kompilieren und sie dann manuell verknüpfen (es sei denn, ich eine JCL, dies zu tun für mich geschrieben.) Also Sie vielleicht einmal mit Link Link haben Ihre andere Module, und verknüpfen Sie dann wieder gegen die C-Bibliothek. Nicht zu pedantisch, aber: Sie ziemlich sicher sind, dass Sie alle den Link tun gibt

Ich weiß, das ist eine Menge von Reifen zu versuchen, und Sie haben wahrscheinlich schon die Handbücher lesen, aber vielleicht gibt es etwas Nützliches zu versuchen?

Auch und Sie wahrscheinlich schon wissen, aber diese Seite (zum Nachschlagen von Fehlercodes) ist unendlich nützlich. (Zusammen mit den oben genannten Links für die Volltext-Suche im Handbuch)

Edit: dieser Seite spricht auch über „integrierte Funktionen“ - Sie könnten versuchen, „#undef memcpy“ (wie im unteren Teil der Seite angegeben) die nicht-integrierte Version verwenden

?

Können Sie uns Ihre Compiler Argumente zeigen? Sie müssen sicherstellen, dass Sie nicht in den Standard-C-Header-Dateien zusätzlich zu den Metall-C diejenigen ziehen. Hier ein Beispiel:

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

Vermissen Sie die schließende Klammer ‚}‘ für die Funktion? Wie wäre es irgendwelche fehlenden Semikolon Linienbegrenzer? Wenn Klammern / Semikolons die z / OS-C-Compiler fehlt wirft einige seltsame / irreführende manchmal Nachrichten. Ich habe es nicht ausprobieren, aber ich gehe davon aus Metall tut so gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top