Я согласен с раскрутить.
Когда меня заставляют использовать статическое распределение, я обычно распределяю эти блоки в пределах области, в которой они используются, то есть в самой функции.
т.е.
static char *createstring(char *foo, char *bar)
{
static char ret[size];
/* do some work, make sure you pay attention to the printf sub system when it
tells you how many bytes weren't printed ... */
return ret;
}
.. конечно, гарантируя, что вход в createstring () защищен каким-то взаимным исключением, и вызывающим не нужно изменять результат.
В зависимости от вашего компилятора, YMMV. Вы действительно должны сделать это глобальным?