在共享库/DLL 中仅存储或检查 getenv() 的值一次

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()因为这是一个共享库。

Bar*_*mar 6

您可以将决策结果保存在静态变量中。

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)