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?