pre-ANSI C-Funktionen

Dieses Thema im Forum "C/C++" wurde erstellt von rikola, 08.10.2006.

  1. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Hallo,
    ich soll gerade C-Code portieren, der schon etwas aelter ist.
    Ich bin auf eine folgendes Konstrukt gestossen:
    Funktionsdeklaration:
    Code:
    int foo (char* a, char* b, int c);
    
    Funktionsaufruf:
    Code:
    foo (a,b);
    
    d.h., die Funktion wird mit nur zwei Argumenten aufgerufen, obwohl fuer das dritte kein default-Argument angegeben ist.

    Das Programm kompiliert unter SGI IRIX - allerdings weiss ich nicht, welche Version und welcher Compiler.

    Mit einem aktuellen gcc kompiliert das Programm offenbar nicht mehr.

    Entweder ist dies also ein Feature des SGI-Compilers und/oder eine vor-Standard-Variante.

    Was ich gerne wuesste ist, wie das dritte Argument gesetzt wird - ich vermute, auf 0, allerdings wuesste ich trotzdem gerne, wie der Compiler damit umgeht.

    Google hat mir noch nicht weitgergeholfen, vielleicht hat hier ja jemand eine Ausgabe von Kernighan&Ritchie zur Hand.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 thobit, 08.10.2006
    Zuletzt bearbeitet: 08.10.2006
    thobit

    thobit Routinier

    Dabei seit:
    11.04.2006
    Beiträge:
    265
    Zustimmungen:
    0
    Kommt drauf an von welchem Typ a und b sind. Wenn ich mich nicht irre wird von links beginnend immer bei passendem Datentyp die formale Variable der Aktuellen zugewiesen.
    Probier einfach mal mit verschiedenen Variablenzuweisungen rum und lass dir das Ergebnis ausgeben.

    EDIT
    Sorry, überlesen, dass aktuelle Compiler das nicht mehr schlucken. Versuche doch einfach den Variablen einen Defaultwert zuzuweisen.
    ala:

    int foo (char* a="test", char* b="test2", int c=0)

    Wenn ich mich nicht irre werden dann bei fehlender Variablen der Defaultwert benutzt. Jedenfalls klappt das bei Konstruktoren in C++.
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Vielen Dank. Das Verhalten bei default-Parametern ist mir allerdings bekannt. Das Problem ist, dass das Programm nicht von mir ist, und wenn ich nun einen default-Wert eintrage, der vom SGI-Compiler so nicht eingesetzt wird, aendere ich das Programm in seiner Funktionsweise. Das geht nicht.

    Daher wuesste ich gerne, was alte Compiler (besonders auf IRIX) dort eingesetzt haben.
     
  5. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    Hast Du die Funktion "foo" schon mal genauer untersucht ?

    Wird "c" so verwendet, das man nicht schlau draus wird ?

    Heiko
     
  6. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Ich würde mir 'c' einfach mal ausgeben lassen um zu sehen mit welchen Wert die Variable belegt wird.
     
Thema:

pre-ANSI C-Funktionen