简述
一个简单的,跨平台c环境变量获取库.
c语言获取环境的变量的方式,window和linux都是相同的方式,通常使用getenv接口进行获取环境变量,但是往往我们获取环境变量的时候,常需要做一定的判断:
- 环境变量未获取到,提示错误(assert),终止程序运行。
- 环境变量未获取到,使用自定义默认值,初始化环境变量。
- bool类型环境变量设置为 yes,true,y,t 等等,能直接转换为bool类型
源代码
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
typedef enum {
ENV_FALSE = 0,
ENV_TRUE = 1
} env_bool_t;
#ifdef _WIN32
#define strcasecmp(s1, s2) stricmp(s1, s2)
#endif
static env_bool_t zstr(const char *s)
{
return (s == NULL || s[0] == '\0') ? ENV_TRUE : ENV_FALSE;
}
static const char* env_get_string_imp(const char* key, const char* default_value, env_bool_t must_get)
{
char* val = getenv(key);
if (!zst