gpt4 book ai didi

c - 如何检查是否在宏中从 C 设置了环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:53 24 4
gpt4 key购买 nike

如果设置了环境变量,我想调用一个日志函数,有点像这样:

if(getenv("Log")){
//Log("blah");
} else {
//do nothing
}

除非,如果我将它定义为一个宏,那么它可能会更干净。

此外,对于 C 编码实践,这样做的正确方法是什么。

最佳答案

真的,将它集成到您​​的日志记录功能本身会更好。例如,此函数将检查环境变量,然后使用与 printf 相同的格式字符串记录到 stderr:

int debug_log(const char *fmt, ...) {
char *env = getenv("DO_DEBUG_LOG");
if(!env || !*env) return;
// don't log if it is unset or a blank string
else {
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
}
}

例如,这可以通过将环境变量解释为数字并传入一个数字作为日志条目的优先级来扩展(因此,如果它仅设置为 1,则不要打印具有 2 或更多)。

通常为此使用宏的程序是根据另一个宏而不是环境变量做出决定的。在这些情况下的优势是避免了非调试版本中函数调用的开销,您在这里并没有真正这样做,因为您每次都在调用 getenv。

关于c - 如何检查是否在宏中从 C 设置了环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com