Supponiamo che tu stia progettando un'API C e una delle tue maggiori preoccupazioni è la stabilità ABI (verrà distribuita come libreria condivisa, o qualsiasi altra cosa).
Hai una funzione esportata
int foo_bar(int a, int b, int* c);
E senti che un giorno potresti aver bisogno di aggiungere uno o più parametri a questa funzione, ma non sai ancora quali.
Vieni con la seguente soluzione
int foo_bar(int a, int b, int* c, int ver,...) ;
#define FOO_BAR_V1 0xA9520F00
E documenta che ver
è riservato e deve sempre essere impostato su FOO_BAR_V1
e i parametri aggiuntivi sono stati ignorati.
Quindi pianifichi che, quando fissi il parametro aggiuntivo necessario, ad esempio un buffer di output, esegui il seguente
int foo_bar(int a, int b, int* c, int ver,/* char* buff, int buffSize, int* outSize*/...) ;
#define FOO_BAR_V2 (FOO_BAR_V1 + 1)
Dopo aver scritto tutto questo, sembra che non ci sia molto da fare in questo caso solo avendo due funzioni esportate (c'è?) oltre a non dover trovare un nuovo nome, quindi suppongo che chiederò anche se qualcuno sa di qualche libreria che fa questo o qualcosa di simile?