Variablen längen Erstellung mit Defines schon im Precompiler?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin ;)


    Angenommen ich erstelle bei einem Befehl eine Varaiable.
    Dann wird ja diese Variable im Befehl selber erstellt
    ocmd:test(playerid, params[])
    {
    new string[128];
    format(string, sizeof string, "Alo %s",Name[playerid]);
    SendClientMessage(playerid, string);
    return 1;
    }


    Wenn ich aber jetzt eine andere Größe haben will der Variable
    ocmd:test(playerid, params[])
    {
    new string[128-MAX_PLAYER_NAME];
    format(string, sizeof string, "Alo %s",Name[playerid]);
    SendClientMessage(playerid, string);
    return 1;
    }



    Nun meine Fragen:
    1. Wird dann immer beim erstellen der Variable 128-24 gerechnet oder automatisch direkt (vom precompiler aus halt) 104 reingeschrieben?
    2. die Funktion sizeof string wird diese auch beim Funktionsaufruf ausgeführt oder auch im Precompiler dann mit 104 ersetzt?


    Ich hoffe man versteht die Fragen und kann mir helfen.
    Danke im Vorraus.


    Schöne Grüße

    ik bin der vito c:

  • 1.) Das macht der Precompiler direkt zu dem Wert der es sein soll. Beispiel:
    #define TEST 900000


    public OnFilterScriptInit()
    {
    new test[1000000-TEST][10];
    test[100415][4] = 1; //error 032: array index out of bounds (variable "test")
    return 1;
    }



    2.) Das macht auch der Precompiler, da du ja auch sowas machen kannst, außerhalb eines Callbacks, daher muss die Funktion vom Precompiler schon verwendet werden.
    new test2[sizeof(test)];