我在我正在处理的库中使用以下代码:
#if defined(_WIN32) && ! defined(__BORLANDC__)
_putenv("PO_TEST_FOO=1");
#else
putenv(const_cast<char*>("PO_TEST_FOO=1"));
#endif
这适用于Windows + MSVC和Linux + GCC(以及Linux + clang等)。但是 - 它与Cygwin64和GCC fails(链接到appveyor构建日志; GCC版本是v6.4.0)。