Durch welchen Aufruf kann man diese beiden Unterprogramme semantisch voneinander unterscheiden:
Funktion (C++): (call by reference)
void swap (int & x, int & y)
{ int h = x; x = y; y = h; }
Makro (C): (call by name)
#define swap(x, y) \
{ int h = x; x = y; y = h; }
Kann man jedes der beiden von copy-in/copy-out unterscheiden?