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的缓存局部性优于线程本地情况。
还有其他想法吗?