top of page

[C]関数ポインタの配列


やりたいこと

掲題の通りだが、関数ポインタの配列を定義したい。

具体的にどう使うかというと、例えばpthread_createの第3引数は新規スレッドで実行したい関数のポインタを渡す。複数の関数に対してそれぞれ新規スレッドを割り当てる場合、それらのポインタを配列にしてまとめて処理したい。



やり方

下記のようにすればよい

void *(*funcs[])(void *)

意味は以下の通り

(*funcs): 関数ポインタ

(*funcs)(void *): voidポインタを引数とする関数へのポインタ

void *(*funcs): void *を返す関数へのポインタ


このように使う

void *(*services[])(void *) = {Service_1, Service_2, Service_3};

for (i = 0; i< NUM_THREADS; i++){
	pthread_create(&threads[0], sched_attr, services[i], (void *)threadParams);
}

void *Service_1(void *threadp){
 ...
}

最新記事

すべて表示

[C]2次元配列のポインタを関数の引数で渡す

やりたいこと 2次元配列に作用する処理がある 処理の対象となる配列が複数ある このような場合、この処理は関数化したいが、引数をどう定義するのかちょっと迷った やり方 配列サイズは固定とすれば、以下のようにすればよい // Define a typedef for the...

[C]コンパイルエラーとリンクエラー

概要 前回、コンパイルとリンクについて説明しました。 今回は、それを元にコンパイルエラーとリンクエラーについて説明します。 コンパイルエラー コンパイルで行われるのは 1 コードのバイナリ化 2 あるものリスト、欲しいものリストの作成...

Comments


カテゴリ

あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page