Mathias hat geschrieben: Di 7. Feb 2023, 15:32
Bei der GTK2 function werden keine eckigen Klammer verlangt.
Ich sehe das "varargs", aber nur in der "overload" function, welche keine "array of const" hat. Aber anscheinend verwendet es diese, obwohl dort nur ein PChar definiert ist.
Bei einer Routine, welche einen
array of const-Parameter hat,
müssen die Werte mit Hilfe eines Array-Konstruktors übergeben werden, schließlich handelt es sich um einen offenen Array Parameter. Bei einer externen
cdecl Routine werden diese Werte dann passend für eine variadische C Routine übergeben.
Bei einer Routine, welche mit
varargs markiert ist, werden die Parameter wie in C Code direkt im Aufruf ohne einen offenen Array Konstruktor angegeben und die Parameter passend an die C Routine übergeben.
Hast du zwei überladene Routinen, von denen eine mit
array of const und die andere mit
varargs markiert ist, heißt das einfach nur, dass du wählen kannst, ob du die Parameter auf die eine oder die andere Weise übergeben möchtest.
Die
array of const-Variante ist magischer als die
varargs-Variante, schließlich ist letzteres das was quasi jeder C Compiler beherrscht, um Funktionen wie
printf oder
scanf umzusetzen.