我正在使用函数 getenv() 通过以下方式获取线程数:
char* var;
var = getenv("OMP_NUM_THREADS");
我收到以下错误:
'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
我尝试按照编译器的建议使用 _dupenv_s,但在同一行中出现以下错误:
Error 1: argument of type "const char *" is incompatible with parameter of type "char **"
Error 2: too few arguments in function call
我在 Microsoft Visual Studio 2019 上运行此代码。虽然完整的代码无关紧要,但这里有一个相同的链接供参考:
https://pardiso-project.org/manual/pardiso_unsym.cpp
一小部分可重现的代码:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(){
using namespace std;
int iparm[64];
char* var;
var = getenv_s("OMP_NUM_THREADS");
if (var != NULL)
sscanf(var, "%d", &num_procs);
else {
printf("Set environment OMP_NUM_THREADS to 1");
exit(1);
}
iparm[2] = num_procs;
return 0;
}
我尝试使用 _dupenv_s,并以下列方式重写了 getenv 行。请告诉我这是否是正确的方法:
char* var;
size_t sz = 10
_dupenv_s(&var, &sz, "OMP_NUM_THREADS");