Ошибка в использовании getenv () для получения количества потоков - PullRequest
1 голос
/ 04 апреля 2020

Я использую функцию 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 и переписал линии геттенв следующим образом. Скажите пожалуйста, если это правильный путь к go о:

char* var;
size_t sz = 10
_dupenv_s(&var, &sz, "OMP_NUM_THREADS");
...