Raj*_*rma 3 c c++ typedef function-pointers char
我很难弄清楚这里的用途是什么typedef-
typedef char TYPE_SSOSettingError;
typedef void (*ans_executeDomainRegistration) (TYPE_SSOSettingError);
Run Code Online (Sandbox Code Playgroud)
从我理解的第一行TYPE_SSOSettingError定义为char.
从下一行我可以看出,这ans_executeDomainRegistration是一个指向函数的指针,该函数具有返回类型void并且char在这种情况下采用类型的参数TYPE_SSOSettingError
然后typedef在最后一行有什么用?
的typedef是,正如你提到的,指向一个功能.因此,它可用于声明指向所述函数的所述指针,然后将其绑定到具有所述签名的函数的实际指针,然后根据需要调用.
typedef char TYPE_SSOSettingError;
typedef void (*ans_executeDomainRegistration) (TYPE_SSOSettingError);
// ...
void somefunc(TYPE_SSOSettingError);
// ...
ans_executeDomainRegistration ptr = &somefunc;
Run Code Online (Sandbox Code Playgroud)
典型的用例是使用某种回调函数.它在标准库中用于设置终止函数等std::set_terminate,使用终止处理程序typedef.
typedef void (*terminate_handler)();
std::terminate_handler set_terminate( std::terminate_handler f );
Run Code Online (Sandbox Code Playgroud)
更一般地说,使用typedef(和类型别名using)提供了一种提供更好抽象的技术.
void (*ptr) (char) = &somefunc; // 1
ans_executeDomainRegistration ptr = &somefunc; // 2
Run Code Online (Sandbox Code Playgroud)
例如,在第1行中不清楚ptr将使用什么,第2行提供更清晰的意图,ptr将用作执行域注册的函数调用,该函数接受SSO设置错误.
这是一种使代码更容易阅读,更好,更简洁或更简洁的技术,以便在代码中表达概念(对于更容易,更好等的一些定义).好好利用它们; 如果使用不当,它们也会使代码更加模糊,更难以阅读和理解.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |