()とは直接関係ないが

char a[10], b[20];
swap(char[30], a, b);

とかで typedef が必要、なぜ? マクロですからとか、聴いてて耳腐る