プロが教える店舗&オフィスのセキュリティ対策術

int型を返す関数へのポインタを返す関数ですが、下記の記述より良い書き方ってありますか?

#include <stdio.h>

int add(int, int);
// int (*i())()
typedef int OBJ(int, int);
OBJ *i();

int main(int argc, const char * argv[]) {

int sum;

sum = i()(1, 2);
printf("sum = %d\n", sum);

return 0;
}

OBJ *i()
{
return add;
}

int add(int x, int y)
{
return x + y;
}

A 回答 (2件)

void (*signal(int sig, void (*func)(int sig)))(int sig);


が一目で理解できる人には冗長かもしれないけど, それはある意味「特殊な訓練を受けた人」だと思う. 一般人は素直に typedef を使うべし. まあそのプログラムが「良い書き方」かといわれると不安だけど.
・OBJ ってどんな意味なの?
・OBJ *i(); って宣言の意味はわかってる?
    • good
    • 0

typedef使うのが一番無難だと思いますよ。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!