You need to define it yourself.
-
C doesn’t have templates.
-
If such function does exist it would look like
void swap(void* a, void* b, size_t length)
, but unlikestd::swap
, it’s not type-safe. -
And there’s no hint such function could be inlined, which is important if swapping is frequent (in C99 there’s
inline
keyword). -
We could also define a macro like
#define SWAP(a,b,type) {type ttttttttt=a;a=b;b=ttttttttt;}
but it shadows the
ttttttttt
variable, and you need to repeat the type ofa
. (In gcc there’stypeof(a)
to solve this, but you still cannotSWAP(ttttttttt,anything_else);
.) -
And writing a swap in place isn’t that difficult either — it’s just 3 simple lines of code!