我有这个简单的功能:
char*
get_time()
{
char *buffer = malloc(sizeof(char)*10); /* HOW TO FREE IT ? */
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer,10,"%H:%M:%S",timeinfo);
return buffer;
}
问题出在 strftime()
上,它需要 char*
并且在返回他的内容之前我无法 free(buffer);
。我能做什么?
我使用该函数的宏:
#define log_info(msg) printf("%s [INFO ] - %s\n",get_time(), (msg))
最佳答案
类似这样的事情
static char g_buffer[10];
#define log_info(msg) \
do { \
get_time(); \
printf("%s [INFO ] - %s\n", g_buffer, (msg)); \
g_buffer[0] = '\0'; \
} while (0)
static int get_time()
{
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(g_buffer,sizeof(g_buffer),"%H:%M:%S",timeinfo);
return 0;
}
int main(void) {
log_info("test");
return 0;
}
但是不需要宏,函数就可以完成这项工作
关于c - 在 C 中创建 get_time() 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475334/