Всё-таки нужно различать прикладной код и библиотечный.
Если я пишу какую-либо прикладную программу, в которой нужно однократно решить изначальную задачку (см. самое первое сообщение Geniepro в теме), то лучшим решением будет то, которое я предложил в начале.
Если данная задачка встречается довольно часто, то нужно библиотечное решение, и тогда лучшим решением будет то, которое предложил Vlad.
Решение, основанное на использовании макросов, мне откровенно не нравится (концептуально, а не по исполнению!). Что-то типа библиотеки для ленивых. Но говорю это с большой долей субъективизма.