C Ошибка: присвоение выражению с типом массива (с библиотекой GMP) - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу передать несколько аргументов pthread_create(), поэтому я создаю struct, и вот мой код

const struct arg_struct {
    mpz_t lower;
    mpz_t upper;
};

void* temp(void* args) {
    struct arg_struct *arguments = args;
    mpz_t lower, upper;
    mpz_init_set(lower, arguments->lower);
    mpz_init_set(upper, arguments->upper);
    gmp_printf("%Zd, %Zd\n", lower, upper);
    return NULL;
}

int main(int argc, char* argv[]) {
    if (argc < 2) printf("Need at least 2 arguments\n");

    pthread_t thread[NTHREADS];

    int i = 0;
    mpz_t lower, upper;
    struct arg_struct args;
    // min and thread_idx are some variables defined before. 
    mpz_set(lower, min);
    mpz_set(upper, min);
    mpz_add(lower, lower, thread_idx);

    args.lower = lower;
    args.upper = upper;

    while (i < NTHREADS) {
        pthread_create(&thread[i], NULL, temp, (void*) &args);
        i++;
    }
}

Где args.lower = lower; и args.upper = upper report error: assignment to expression with array type, и я не уверен, как правильно это исправить (с типом библиотеки GMP).

...