私はこの質問/エラーを多く見ましたが、何が間違っているのか分かりません。私はスレッドに関するいくつかの情報を含む構造体を作成し、基本的にはスレッドを作成するたびにいくつかの値(スレッド番号、現在のスレッドなど)を割り当てたいと思っています。スレッドはこのエラーとは関係ありません。これまでのところ、私はちょうど私の構造体を動作させるためにしようとしていますが、私はエラー:不完全な型へのポインタの参照
thread->num=num;
の一部に不完全な型へのポインタをdeferencingためエラーを取得しておくと、それはメモリ割り当てエラーですか?または何か手がかり? は、ここに私のコードです:
のmain.c //私にすべてのエラーを与えるものではありません
struct sPRIME_THREAD *new_thread = create_thread(1,0,0,20);
printf("Thread Info:\n");
print_info(new_thread);
がheader.h
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
/* Macro definitions */
#define MAX_THREADS 5 // Maximum number of prime search threads
/* Data types */
typedef struct // Prime search thread data
{
unsigned int num; // Prime search thread number
unsigned int current; // Number currently evaluating for primality
unsigned int low; // Low end of range to test for primality
unsigned int high; // High end of range to test for primality
} sPRIME_THREAD;
/* Shared global variables */
extern sPRIME_THREAD primeThreadData[MAX_THREADS]; // Prime search thread data
int numThreads; // Number of prime search threads
struct sPRIME_THREAD *create_thread(unsigned int num, unsigned int current,
unsigned int low, unsigned int high)
{
struct sPRIME_THREAD *thread = (sPRIME_THREAD *)malloc(sizeof(sPRIME_THREAD));
thread->num = num;
thread->current = current;
thread->low = low;
thread->high = high;
return thread;
}
void destroy_thread(struct sPRIME_THREAD *thread)
{
free(thread);
}
void print_info(struct sPRIME_THREAD *thread)
{
printf("Num: %d\n", thread->num);
printf("Current: %d\n", thread->current);
printf("Low: %d\n", thread->low);
printf("High: %d\n", thread->high);
}
'struct sPRIME_THREAD'は未定義です。 'typedef struct {...} sPRIME_THREAD; 'を実行することによって、' sPRIME_THREA'型を定義するだけです。 – alk
私はやってみた typedef struct sPRIME_THREAD \t {...} sPRIME_THREAD; と私は多くの複数の定義エラーを取得します。 –