void pthread_create(& thr、NULL、thre、???)のような可変引数(n個の引数)を持つ関数を実装する方法:void * thre(int、...) ありがとうございます。pthread_create()の可変引数を持つ関数?
0
A
答えて
1
スレッドハンドラ関数のプロトタイプが設定されています。 void* (*)(void*)
である必要があります。それは未定義の動作の原因となりますので、あなたは、さえ鋳造で、何か他のものを受け入れる機能を渡すことはできません。
しかし、POSIXはあなたに何のアドレスを通過するのに十分である単一void*
パラメータを、可能にするため、限定的なものではないということ。だから、
あなたには、いくつかの追加のパラメータを渡したい場合は、構造中にそれらを束ねる:
struct my_data {
int n;
char c;
double d;
};
void *variable_argument_function (int first_arg, ...) {
return NULL;
}
void* handler(void *vdata) {
struct my_data *data = vdata;
return variable_argument_function(data->n,
data->c,
data->d);
//use data->n, data->c, data->d
}
int main(void) {
struct my_data t_data = {
.n = 1, .c = 'a', .d = 3.14
};
pthread_t t;
if (pthread_create(&t, NULL, &handler, &t_data) == 0)
pthread_join(t, NULL);
return 0;
}
+0
@ YasserNezzari - 正しく収集したら、はい。私が更新したコードのようにしてください。 – StoryTeller
+0
ありがとうございました。 –
関連する問題
- 1. 可変引数を持つ関数ランタイムエラー
- 2. C - 可変数の引数とコマンドライン引数を持つ関数
- 3. ifelseの可変数の引数を持つR関数
- 4. 可変引数数を持つ関数のTypeScript型シグネチャ
- 5. 可変の引数を持つC++テンプレート関数
- 6. スカラ:別の関数から可変引数を持つ関数を返す
- 7. 可変引数を持つ関数に関数ポインタを渡すには?
- 8. デフォルトの引数を持つ可変長引数リスト?
- 9. 可変数の入力を持つ関数の引数リストを作成する
- 10. C++可変引数関数の可変引数マクロ
- 11. 複数の引数をスレッド関数に渡すpthread_create
- 12. pthread_create()が呼び出す関数への複数の引数?
- 13. 可変数の関数引数Lua 5.1
- 14. 引数(素数)を持つ関数
- 15. 可変数の引数を持つマクロを折り返す
- 16. 可変数の引数を持つスカラクラスのコンストラクタ
- 17. デフォルトの引数を持つSoaplib関数
- 18. デフォルトの引数を持つPython関数
- 19. 可変パラメータを持つMySQL関数
- 20. Dで可変数の文字列引数を持つミックス?
- 21. 可変数の引数を持つPython拡張モジュール
- 22. Javaで可変数の引数を持つコンストラクタ
- 23. 可変数の引数を持つPython itertools.product
- 24. C++の関数引数の可変量
- 25. C関数の可変引数
- 26. リーマンプロジェクト関数の可変引数
- 27. javascript/jQueryで変数引数を持つ関数
- 28. 異なる引数を持つ関数
- 29. NULL引数を持つJulia関数
- 30. 可変個引数可変引数テンプレートテンプレート
私はあなたが望むものを正確にわからないんだけど、解決策は、ソフトウェア・エンジニアリングの基本的な定理を使用することが考えられます:間接参照のレベルを追加します。 – StoryTeller
NVM、私はそれを得たと思います。 – StoryTeller