私はそのようなエラーの理由を知ります。 "int"は "void *"のバイトを保持するのに十分な大きさではありません。しかし、私の質問は、Linuxのpthread_create
を処理する必要があるということです。実行するために関数の引数を渡したいときです。多くの例では、私はそのような機能前方宣言を参照してください。void *へのキャストint *が精度を失い、必要な場合の解決方法は何ですか
void* thread_proc(void* arg);
そして機能で、ファイルポインタを(int型である)arg
として渡されます。しかし、コンパイラは(論理的に)intのキャストに対して無効になることを警告するエラーをスローします。私もintptr_t(別名長いポインタ)を使用していますが、無駄です。
result = pthread_create(&thread_id, NULL, thread_proc, (void *)new_request_socket);
new_request_socket
は、ソケットのfdを表すintです。
関数の引数として整数を渡す方法は、それ自体がpthread_create()
によって実行される関数として渡されます。
あなたは 'pthread_create'を扱う必要はありません。単に 'std :: thread'を使うだけです。問題が解決しました。 –
'int'値ではなく' int'値へのポインタを直接渡します。 – kaylum
@SamVarshavchikもっと詳しく教えてもらえますか? –