static const char* objToStr(Obj o)
{
static __thread char s[64];
snprintf(s, sizeof(s), "Obj: ...", ...);
return s;
}
static const char* objToStr2(Obj o, char* s, size_t len)
{
snprintf(s, len, "Obj: ...", ...);
}
int main()
{
Obj o;
...
const char* s1 = objToStr(o);
char buf[64];
const char* s2 = objToStr2(o, s2, sizeof(buf));
}
Просто интересно, потому что objToStr синтетически должен быть проще в использовании, и из моего базового исследования там локальное хранилище потоков в gcc встроено и не должно само по себе снижать производительность. Единственный недостаток, который я могу придумать, заключается в том, что локальность кэша objToStr2 будет лучше, чем локальный случай потока.
Есть еще мысли?
Задача ещё не решена.
Других решений пока нет …