Szerintem - mivel a size_t valami typedef unsigned long lehet - semmi nem oldja meg azt a problémát, hogy a 0-ás karakter egyúttal unsigned int is, az pedig nem implicit konverzió C-ben, hogy unsigned longot csinálok belőle.
Ja, és a '' mindenképpen warningot generál -Wall-nál, mert üres karakter nincs a C-ben (error: empty character constant).