NXOPEN二次开发之获取环境变量值混乱
看标题就知道顾名思义了,这是getenv()的一个坑。
char* appdata = getenv("APPDATA");很简单的一句,乍一看没问题是不是?一开始我也觉得是,首次运行起来也好好的。
但是,因为是开发的插件,主程序我一般是不关闭的,那么再第二次运行插件的时候,好戏上场了:正常来说appdata应该是
C:\Users\用户名\AppData\Roaming
拿到appdata后,就用来做别的事,当然没对appdata进行改动,仅仅是赋值给其它变量,偏偏第二次运行的时候,appdata就变了,变成了我新建的目录和文件路径,例如
C:\Users\用户名\AppData\Roaming\Plugin\XXXX.TXT
很奇怪是不是?然后我直接打印getenv(“APPDATA”),发现它也变成了文件路径!
经过连续两天检查代码,我直觉告诉我代码逻辑没问题,是getenv()在作妖!
然后找了替代,那就是_dupenv_s,
char *appdata; size_t len; errno_t err = _dupenv_s( &appdata, &len, "APPDATA" );然后世界又变得美好了!