P
Hi,
hierbei handelt sich um eine präprocessor anweisung. _a_ und _b_ sind nur platzhalter für die eigentlichen parameter. Der typ ist egal weil hier der compiler noch garnicht seine finger drinnen hat. Der präprozessor ersetzt nur text und macht keine typprüfungen. Die '\' sind teil der syntax und bieten die möglichkeit zeilenumbrüche in solche anweisung zu bauen. Anders wäre das nicht möglich bzw. würde vom präpro angemeckert werden.
Das ergebniss eines aufrufs der form
void some_func(){
int i=3;
//tu was
LOAD_IP(foo,bar)
//tu noch was
printf("%d\n",i);
}
wäre nach dem preprocessing:
void some_func(){
int i=3;
//tu was
{
char __tmp[20];
if (GetPrivateProfileInt (foo, "VALID", 0, client->inipath))
{
GetPrivateProfileString (foo,
"VALUE",
"",
__tmp,
sizeof(__tmp),
client->inipath);
client->settings.bar=inet_addr(__tmp);
}
else
client->settings.bar=INVALID_SETTING;
}
//tu noch was
printf("%d\n",i);
}
_a_ wird immer durch foo ersetzt und _b_ immer durch bar, und zwar BEVOR die eigentlich compile-phase losgeht.