如何显示该函数属于 C 中的 typedef?
How to show that function belongs to a typedef in C?
如果我有函数指针的typedef,比如
typedef void (* specialFunction) (void);
我如何证明我正在声明该类型的函数,而不是巧合地声明具有相同签名的函数?
我并不是要强制执行任何内容,只是为了使代码更清晰(和可维护),并明确表示函数声明是定时器回调或 ISR 例程。
显然,我不能
extern specialFunction mySpecialFunction(void);
但是有什么方法可以在声明中使用 specialFunction
来区分 mySpecialFunction
和 myBoringlyNormalFunction
?
你对此无能为力。但是,对于视觉表示,您可以使用像 Adam Dunkels 这样的自定义 protothreads:
typedef void (* specialFunction) (void);
#define TIMERCALLBACK(x) specialFunction x
然后像这样声明函数:
TIMERCALLBACK(mycallback(void)) {
//do your job
}
例如,这只是将函数表示为 timer callback
的一种方式。
你不能这样声明函数,只能声明变量。但是您可以使用宏来确保像这样正确声明您的函数。
typedef void (* specialFunction) (void);
#define SPECIALFUNCTION(x) void x(void)
extern SPECIALFUNCTION(mycallback);
int main(void)
{
specialFunction foo=mycallback;
foo();
}
SPECIALFUNCTION(mycallback)
{
printf("test\n");
}
void (* specialFunction) (void);
是指针类型。您不能声明指针类型的函数。我假设你的意思是你想声明一个像 void f(void);
这样的函数,但是基于那个 typedef。
如果是这样,您可以将 typedef 设为函数类型:
typedef void specialFunction(void);
然后你可以像这样声明一个该类型的函数和一个指向该函数的指针:
specialFunction func_name;
specialFunction *p_func = &func_name;
许多人认为避免使用指针类型定义会使代码更易于阅读,因为 *
符号的存在清楚地表明我们是否正在使用指针。
如果我有函数指针的typedef,比如
typedef void (* specialFunction) (void);
我如何证明我正在声明该类型的函数,而不是巧合地声明具有相同签名的函数?
我并不是要强制执行任何内容,只是为了使代码更清晰(和可维护),并明确表示函数声明是定时器回调或 ISR 例程。
显然,我不能
extern specialFunction mySpecialFunction(void);
但是有什么方法可以在声明中使用 specialFunction
来区分 mySpecialFunction
和 myBoringlyNormalFunction
?
你对此无能为力。但是,对于视觉表示,您可以使用像 Adam Dunkels 这样的自定义 protothreads:
typedef void (* specialFunction) (void);
#define TIMERCALLBACK(x) specialFunction x
然后像这样声明函数:
TIMERCALLBACK(mycallback(void)) {
//do your job
}
例如,这只是将函数表示为 timer callback
的一种方式。
你不能这样声明函数,只能声明变量。但是您可以使用宏来确保像这样正确声明您的函数。
typedef void (* specialFunction) (void);
#define SPECIALFUNCTION(x) void x(void)
extern SPECIALFUNCTION(mycallback);
int main(void)
{
specialFunction foo=mycallback;
foo();
}
SPECIALFUNCTION(mycallback)
{
printf("test\n");
}
void (* specialFunction) (void);
是指针类型。您不能声明指针类型的函数。我假设你的意思是你想声明一个像 void f(void);
这样的函数,但是基于那个 typedef。
如果是这样,您可以将 typedef 设为函数类型:
typedef void specialFunction(void);
然后你可以像这样声明一个该类型的函数和一个指向该函数的指针:
specialFunction func_name;
specialFunction *p_func = &func_name;
许多人认为避免使用指针类型定义会使代码更易于阅读,因为 *
符号的存在清楚地表明我们是否正在使用指针。