0

プログラムからエラーが発生しましたが、これはまだ進行中の作業であり、エラーが混乱しています。このプログラムは、スレッドを使用して、4 で割り切れる数の平方根の合計の計算を高速化するプログラムです。私のコードは次のとおりです。

#include <pthread.h>
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#define NUM_THREADS 3;
int ARGV;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
int total;


void *calc(int t){
int ttl;
int i;
if (t == 0) {
    for (i == ((ARGV / 4) + 1); i < (ARGV / 2); i++){
        ttl = ttl + sqrt(i);
    }
} else if (t == 1) {
    for (i == ((ARGV / 2) + 1); i < ((3 * ARGV) / 4); i++){
        ttl = ttl + sqrt(i);
    }
} else if (t == 2) {
    for (i == (((3 * ARGV) + 1) / 4); i < ARGV; i++){
        ttl = ttl + sqrt(i);
    }
}
pthread_mutex_lock(&m);
total = total + ttl;
pthread_mutex_unlock;
}

int main(int argc, char* argv[]) {
    int i;
    int ttl;
    ARGV =  atoi(argv[1]);

    pthread_t ti[NUM_THREADS];

    for (i = 0; i < NUM_THREADS; i++) {
        pthread_create(&ti[i], NULL, calc, i);
    }
    for (i == 1; i < (ARGV / 4) ; i++){
            ttl = ttl + sqrt(i);
    }
    for (i = 0; i < NUM_THREADS; i++)   {
        pthread_join(&ti[i], NULL);
    }
    total = total + ttl;
}

私が得ているエラーは thr.c:37: error: expected ']' before ';' です 予想されるシンボルがそこにあるため、理解できません。どんな助けでも大歓迎です。

4

3 に答える 3

6
#define NUM_THREADS 3;

そう:

pthread_t ti[NUM_THREADS];

次のように展開します。

pthread_t ti[3;];

エラーが示すように、はの前に]ある必要があります。;

于 2013-09-23T20:28:16.080 に答える
4

あなたが持っている必要があります

#define NUM_THREADS 3

それ以外の

#define NUM_THREADS 3;

最後にいいえ;

これは、置換がテキストで行われるためthread_t ti[NUM_THREADS];、拡張されthread_t ti[3;];、ここからエラーが発生するためです。

ヒント: マクロがエラーに関係している場合は、コンパイルし-Eてデバッグ用の展開を確認できます。

于 2013-09-23T20:27:55.253 に答える