マルチスレッドプログラミング警告: 異なるサイズの整数からポインタへのキャスト [-Wint-to-pointer-cast] エラーが解決されました。
2022-02-25 13:33:31
- マルチスレッドプログラミングでの利用
thread_start(pthread_t * thread_id, THREAD_BODY * thread_workbody, void *thread_arg);
最後の引数がサブスレッドのファイル記述子へのポインタ(int型)である必要があるため、サブスレッドを作成する際には、ファイル記述子を強力に変換して呼び出します。
(void *) type
int型からvoid型のポインタに強変換すると、こうなるというのは、システムが違うのかもしれません。
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
このようなエラーを解決するには、そのファイルディスクリプタのアドレス、すなわち
eg: thread_start(&tid, thread_worker, &chifd);
もう一度コンパイルすれば直ります!
-
お使いのシステムが int と (void *) の間の型変換をサポートしていない場合、サブスレッドに次のような他のタスクを実行させようとすると、マルチスレッド・プログラミングに遭遇することもあります。
thread_worker(void *ctx)
この関数は、サブスレッドのファイル記述子への void ポインタを渡したままなので、もし、直接chifd = (int)ctx
を使用すると上記の問題が発生するため、まず強制的にポインタを(int *)
型に変換し、その値を
例えば
chifd = *(int *)ctx
前任者を参照する。 https://blog.csdn.net/mybelief321/article/details/9375929
関連
-
Python easy_install は "ImportError: pkg_resources という名前のモジュールがありません" というエラーが発生しました。
-
VNC mesg を開くとき: ttyname に失敗しました。デバイスに不適切な ioctl
-
セキュアネットワーク(sshポートマッピング) -----図の詳細を使用することができます。
-
nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (13: Permission denied)。
-
Ansibleの通常ユーザーsudoがコマンドを実行します。
-
dpkg: パッケージの処理エラー ***(--install): 依存関係の問題 - 未設定にする
-
PrettyTable TypeError: リストには("map "ではなく)リストしか連結できない
-
chmod: 'xxx' のパーミッションを変更しました。操作は許可されていません
-
valgrind プロンプトエラー。条件付きジャンプまたは移動は、初期化されていない値に依存します。
-
curlコマンドの使用。HTTPリクエスト、ファイルダウンロード、FTPアップロードとダウンロード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmakefile のエラー *** セパレータがありません。
-
undefinedmakefile:n: *** セパレータがありません。
-
[Linux] [コンパイル] libmpc.so.3: cannot open shared object file: そのようなファイルまたはディレクトリはありません
-
警告: 組み込み関数 'exit' の非互換な暗黙の宣言
-
プログラム下部の2つのスイスアーミーナイフをこじ開ける
-
centos - centos7 で Python プログラムをバックグラウンドで実行する。
-
Linuxでシステムの基本情報、バージョン情報(最も完全なバージョン)を見ることができます。
-
cmake: execute_process を使ってシェルコマンドやスクリプトを呼び出す。
-
Error mlogc.c:32:23: error: curl/curl.h: そのようなファイルやディレクトリはありません
-
SSL:EE_KEY_TOO_SMALLの解決方法