1. ホーム
  2. c

[解決済み] スカラーが必要な場所で構造体型の値が使用されました」を修正するには?

2022-02-09 02:06:59

質問

コンパイル時にこのエラーが何度も出るのですが、原因がわかりません。コードブロックは以下の通りです。

static int
run(int nm, int nf)
{
    int i, j;
    int err, n = nm + nf;
    pthread_t thread[n];

    for (i = 0; i < n; i++) {
        err = pthread_create(&thread[i], NULL,
                  i < nm ? male : female, &shared_bathroom);
        if (err) {
            fprintf(stderr, "%s: %s: unable to create thread %d: %d\n",
                    progname, __func__, i, err);
            return EXIT_FAILURE;
        }
    }

    for (j = 0; j < n; j++) {
        if (thread[j]) (void) pthread_join(thread[j], NULL);
    }

    return EXIT_SUCCESS;
}

2つ目のforループの下のif文のある行でエラーが出ます。具体的には、以下の箇所を指していると思われます。 (thread[j]) .

解決方法は?

式は thread[j] のインスタンスを返します。 pthread_t のように、ブーリアンコンテキストでは使用できません。 if ステートメント)。 を必要とする理由はありません。 if ステートメントを使用します。 と言うだけです。

for (j = 0; j < n; j++) {
    pthread_join(thread[j], NULL);
}