mux が説明したように、使用する必要があります
struct dirent *ent = (struct dirent *)arg;
なぜこれをしなければならないのかを明確にしたいだけです。構造体を宣言すると、次のいずれかが実行されます
1. typedef なし
struct my_struct // <----- Name of the structure(equivalent to datatype)
{
int x;
int y;
} hello; // <------Variable of type my_struct
これで、次を使用してアクセスできます。
hello.x=100;
新しい変数の宣言は、次を使用して行うことができます
struct my_struct new_variable; (new_variable is new variable of type my_struct)
2. typedef を使用するようになりました
typedef struct my_struct
{
int x;
int y;
} hello; //<----- Hello is a typedef for **struct my_struct**
だからあなたがするとき
hello new_var; // <-------- new_var is a new variable of type my_struct
hello.x // <-------- Here hello refers to the datatype and not the variable
したがって、変数 dirent は、さまざまなコンテキストでさまざまなことを意味する可能性があります:-
構造体に言及しない場合、コンパイラはそれが typedef コンテキストにあると想定するため、変数が宣言されていないことがわかります。
したがって、mux が指すように直接言及する必要があります。