函数指针

typedef void (*Func)(int);
typedef Func (*Func2)(int i, int j);  
typedef void (*(*Func3)(int i, int j)) (int);

void print(int i) {
    cout << "print: " << i << endl;
}

Func fun(int i, int j) {
    cout << "fun: " << i <<" "<< j << endl; 
    return print;
}

int main(int argc, const char * argv[])
{
    Func f1 = print;
    f1(1);

    Func2 f2 = fun;
    f2(1, 2)(1);

    Func3 f3 = fun;
    f3(1, 2)(1);

    return 0;
}

2 '#'和'##'

#define STR(arg) #arg          // 宏STR(macro)展开时为"macro"
#define COMBINE(next) val->##next   // 则宏COMBINE(1)展开为val->next

3


shiyang6017
158 声望59 粉丝