Я использую функцию, которая возвращает символ *, и сейчас я получаю предупреждение компилятора «возвращение адреса локальной или временной переменной», поэтому я предполагаю, что мне придется использовать статическую переменную для возврата, мой вопрос можно сделать что-то вроде, если (переменная уже установлена) вернуть var, иначе сделать функцию и вернуть var?
Это моя функция:
char * GetUID()
{
TCHAR buf[20];
StringCchPrintf(buf, 20*sizeof(char), TEXT("%s"),
someFunction());
return buf;
}
И вот что я хочу сделать:
char * GetUID()
{
static TCHAR buf[20];
if(strlen(buf)!=0) return buf;
StringCchPrintf(buf, 20*sizeof(char), TEXT("%s"),
someFunction());
return buf;
}
Хорошо ли использовать статические переменные? И я должен использовать ZeroMemory (& buf, 20 * sizeof (char)) ? Я удалил его, потому что, если я использую его выше if (strlen ...), моя длина TCHAR никогда не равна 0, я должен использовать это ниже?