a11*_*rva 1 c dll strcmp getenv
我有一个打印调试日志的功能,必须根据环境变量进行切换。print_trace()存储它并重用该值的最佳方法应该是什么,而不是每次调用时检查环境变量?
void print_trace(const char* msg)
{
const char* s = getenv("DEBUG_TRACE");
if(!strcmp(s,"ON"))
printf(msg);
}
Run Code Online (Sandbox Code Playgroud)
没有,main()因为这是一个共享库。
您可以将决策结果保存在静态变量中。
void print_trace(const char* msg)
{
static int debug_on = -1; // -1 == not yet set
if (debug_on == -1) {
const char* s = getenv("DEBUG_TRACE");
debug_on = s && (strcmp(s, "ON") == 0);
}
if(debug_on)
printf("%s", msg);
}
Run Code Online (Sandbox Code Playgroud)