Mam plik nagłówkowy, który zawiera
#define PROTOTYPE(s) s
Jaki to ma sens? Wygląda na to, że po prostu zastąpiłby wejście sobą.
Istnieje mnóstwo innych dyrektyw wokół niego, ale jedynym, który wydaje się mieć żadnego wpływu po prostu sprawdzić, czy jest zdefiniowana: #ifndef PROTOTYPE
. Znalazłem kilka miejsc w plikach nagłówkowych HDF4 że to zrobić: #define PROTOTYPE
. Więc nic z tego nie wyjaśnia mojego pytania. Wciąż wydaje się całkiem bezużyteczny.
Oto jak to jest używane:
CS_RETCODE clientmsg_callback PROTOTYPE((
CS_CONTEXT * context,
CS_CONNECTION *connection,
CS_CLIENTMSG *clientmsg));
Jest to część projektu korzystającego z Sybase Open Client. clientmsg_callback jest później używany tutaj:
ct_callback(context, NULL, CS_SET, CS_CLIENTMSG_CB,
(CS_VOID *)clientmsg_callback);
Wychodzę z przykładowego programu stąd:
clientmsg_callback jest implementowany później. Myślę, że próbka została pierwotnie napisana z myślą o C, a nie o C ++. Może to ma z tym coś wspólnego?
#if
/#ifdef
/#ifndef
/, w#else
których zamiast tego może mieć inną definicję? Może to mieć znaczenie, gdy jest używane w innych makrach, zwłaszcza w pobliżu#
lub##
. Może to być tylko styl komentowania. Za mało kontekstu, aby naprawdę odpowiedzieć.