不明な宣言????

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
タマン

不明な宣言????

#1

投稿記事 by タマン » 15年前

こんにちは。
google等で調べている途中ですが、みなさんの知恵をお借りしたいので質問させていただきます。
現在、とあるオープンソースソフトウェアのコードを調査しているのですが、その中の宣言記述に理解できないものがありました。

---ここから
static int (*p_app_setbuff) (app_t *, int d);
---ここまで

これは一体どのような宣言なのでしょうか。
関数プロトタイプ宣言ではなさそうですし。。。

どなたかお力をいただけると嬉しいです。
宜しくお願い致します。

ドラ

Re:不明な宣言????

#2

投稿記事 by ドラ » 15年前

p_app_setbuff は「app_t*型とint型の引数をとり、int型の値を返す関数」
を指す関数ポインタです。

記述がゴチャゴチャしていますが、以下のようにすると多少読みやすくなります。

typedef int Func(app_t *, int);
static Func *p_app_setbuff;

たかぎ

Re:不明な宣言????

#3

投稿記事 by たかぎ » 15年前

慣れれば、へたにtypedef名にするより、元の書き方のほうが読みやすくなります。
typedef名にすると、一見して関数へのポインタだとは気付きませんよね。

ookami

Re:不明な宣言????

#4

投稿記事 by ookami » 15年前

おはようございます。
皆さんの仰るとおりなので、参考リンクだけ↓
http://www.geocities.jp/ky_webid/c/043.html

ドラ

Re:不明な宣言????

#5

投稿記事 by ドラ » 15年前

>慣れれば、へたにtypedef名にするより、元の書き方のほうが読みやすくなります。
>typedef名にすると、一見して関数へのポインタだとは気付きませんよね。

そうですね。
関数ポインタに不慣な人の理解を助けるための脳内イメージとして書きました。

閉鎖

“C言語何でも質問掲示板” へ戻る