Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用getenv()获取线程数时出错_C++_Openmp_Setenv_Getenv_Pardiso - Fatal编程技术网

C++ 使用getenv()获取线程数时出错

C++ 使用getenv()获取线程数时出错,c++,openmp,setenv,getenv,pardiso,C++,Openmp,Setenv,Getenv,Pardiso,我使用函数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. 我尝

我使用函数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_,但在同一行中出现了以下错误:

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上运行此代码。虽然完整的代码是不相关的,但这里有一个链接供参考:

代码中可复制的一小部分:

#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;
}

请用不起作用的代码显示a。您是否阅读了
getenv_s
?你传递了错误的参数数量取决于
var
sz
是什么以及它们的初始化方式
sz
的值由
\u dupenv\u s
设置并不重要,如果(在上面的级别)你真的需要可以使用的OpenMP线程数量,那么所有这些getenv的东西都是在浪费时间!不需要设置OMP_NUM_线程。要了解可使用的线程数,请在代码的外部级别(并行之前)调用omp_get_max_threads()。请显示一个包含不工作代码的线程。是否阅读了for
getenv_s
?你传递了错误的参数数量取决于
var
sz
是什么以及它们的初始化方式
sz
的值由
\u dupenv\u s
设置并不重要,如果(在上面的级别)你真的需要可以使用的OpenMP线程数量,那么所有这些getenv的东西都是在浪费时间!不需要设置OMP_NUM_线程。要了解可使用的线程数,请在代码的外部级别(并行之前)调用omp_get_max_threads()
char* var;
size_t sz = 10
_dupenv_s(&var, &sz, "OMP_NUM_THREADS");